如何构建不同维度的单元阵列或矩阵

时间:2016-09-14 00:24:32

标签: matlab cell-array

我在Matlab中使用findpeaks方法查找峰值。我有一个260x601的矩阵(峰值),在260个时间点进行了260次不同的试验。我有一个单独的矢量用于实际时间(称为TimeVec)。

我使用for循环来遍历试验。

for i = 1:size(Peak,1)
    [pks(i),locs(i)]=findpeaks(Peak(i,:),timeVec,'MinPeakHeight',1);
end

问题在于每个试验可能具有不同数量的峰值,因此它试图将不同数量的列组合到每次迭代中。我怎么能绕过这个?

1 个答案:

答案 0 :(得分:1)

这是一种简短且不完全有效的方法:

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建议并阅读单元格数组文档。