How to find peaks in a for loop where the number of peaks are not the same for every vector in matrix?

4 views (last 30 days)
I am trying to find the peaks and locations of vectors in the columns of a matrix (CH1WaveForm_1). Not every vector has the same number of peaks and I think thats why it is giving me this error: Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
for i=1:size(CH1WaveForm_1,2)
QT(:,i) = [CH1WaveForm_1(1:end,i)];
[pks(i),locs(i)]=findpeaks(QT(:,i));
end
I keep getting that error and I have tried changing the last line to [pks(:,i),locs(:,i)]=findpeaks(QT(:,i)); and it still does not work. Is there any way to make this work without having to write the individual lines of code for the entire matrix? The matrix is 5119 x 102.

Accepted Answer

dpb
dpb on 9 Jun 2020
That's when cell arrays are useful...
for i=1:size(CH1WaveForm_1,2)
[pks{i},locs{i}]=findpeaks(CH1WaveForm_1(1:end,i));
end

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!