如何构建不同维度的元胞数组或矩阵
How to build a cell-array or matrix of different dimension
我在 Matlab 中使用 findpeaks
方法来查找峰值。我有一个 260x601 的矩阵(峰值),其中它在 601 个时间点上进行了 260 次不同的试验。我有一个单独的实际时间向量(称为 TimeVec)。
我正在使用 for 循环遍历试验。
for i = 1:size(Peak,1)
[pks(i),locs(i)]=findpeaks(Peak(i,:),timeVec,'MinPeakHeight',1);
end
问题是每次试验可能有不同数量的峰,因此它试图将不同数量的列组合到每次迭代中。我该如何解决这个问题?
这是一个简短且效率不高的方法:
fp = @(k) findpeaks(Peak(k,:),timeVec,'MinPeakHeight',1);
[pks,locs] = arrayfun(fp,1:size(Peak,1),'UniformOutput',false);
使用 for
循环会快一点,但只有当您有更多数据时才值得更改:
[pks,locs] = deal(cell(size(Peak,1),1));
for k = 1:size(Peak,1)
[pks{k},locs{k}] = findpeaks(Peak(k,:),timeVec,'MinPeakHeight',1);
end
要进一步操作,请使用@excaza 建议并阅读元胞数组文档。
我在 Matlab 中使用 findpeaks
方法来查找峰值。我有一个 260x601 的矩阵(峰值),其中它在 601 个时间点上进行了 260 次不同的试验。我有一个单独的实际时间向量(称为 TimeVec)。
我正在使用 for 循环遍历试验。
for i = 1:size(Peak,1)
[pks(i),locs(i)]=findpeaks(Peak(i,:),timeVec,'MinPeakHeight',1);
end
问题是每次试验可能有不同数量的峰,因此它试图将不同数量的列组合到每次迭代中。我该如何解决这个问题?
这是一个简短且效率不高的方法:
fp = @(k) findpeaks(Peak(k,:),timeVec,'MinPeakHeight',1);
[pks,locs] = arrayfun(fp,1:size(Peak,1),'UniformOutput',false);
使用 for
循环会快一点,但只有当您有更多数据时才值得更改:
[pks,locs] = deal(cell(size(Peak,1),1));
for k = 1:size(Peak,1)
[pks{k},locs{k}] = findpeaks(Peak(k,:),timeVec,'MinPeakHeight',1);
end
要进一步操作,请使用@excaza 建议并阅读元胞数组文档。