Matlab 如何构建不同维度的单元数组或矩阵

Matlab 如何构建不同维度的单元数组或矩阵,matlab,cell-array,Matlab,Cell Array,我正在使用Matlab中的findpeaks方法来查找峰值。我有一个260x601的矩阵(峰值),其中在601个时间点上有260个不同的试验。我有一个单独的实际时间向量(称为TimeVec) 我使用for循环来循环测试 for i = 1:size(Peak,1) [pks(i),locs(i)]=findpeaks(Peak(i,:),timeVec,'MinPeakHeight',1); end 问题是每个试验可能有不同数量的峰值,因此它试图将不同数量的列组合到每个迭代中。我该如何

我正在使用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 advice并阅读单元格数组文档。

阅读