How to define a for loop for given FINDPEAKS problem ?

7 views (last 30 days)
[A1,L] = findpeaks(A(:,1));
A1(:,2) = A(L,2);
[A2,L1] = findpeaks(A1(:,1));
A2(:,2) = A1(L1,2);
[A3,L2] = findpeaks(A2(:,1));
A3(:,2) = A2(L2,2);
Dyuman Joshi
Dyuman Joshi on 24 Feb 2024
Edited: Dyuman Joshi on 24 Feb 2024
What exactly are you trying to do here?
Parvesh on 24 Feb 2024
Actually the matrix A comprises of two columns. 1st column contains acceleration (dependent variable) and the 2nd column is associated time-period (Variable).
The whole code isattached herewith.

Sign in to comment.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 24 Feb 2024
Try this -
B = [num2cell(A,1); cell(n,2)]
for k=2:n
[B{k,1}, L] = findpeaks(B{k-1,1});
B{k,2} = B{k-1,2}(L);
Here 1st row of B corresponds to A, 2nd to A1, 3rd to A2 and 4th to A3.
Use indexing to access the data.
Parvesh on 28 Feb 2024
it is giving error, "Unrecognized function or variable 'd'.
Error in Chamoli1991VDC02 (line 6)
num = numel(d);"
Let me share you the .dat file so that you can recheck from your end. By the way, thanks a lot man!!
Dyuman Joshi
Dyuman Joshi on 29 Feb 2024
Ah, that's a typo. My bad.
To correct it, replace
num = numel(d);
num = numel(data);

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!