Split array into sub arrays and apply function
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Priscilla
am 15 Jul. 2020
Kommentiert: Priscilla
am 15 Jul. 2020
Hi everyone,
I am using findpeaks to detect peaks in my data and would like to create a sub arrays everytime a peak is detected and then apply a function to the sub arrays for example
If
x = [0.2954 0.0861 -0.0204 0.0046 0.2297 0.7651 -0.4482 -1.2974 0.3673 -0.7759 0.5676 1.0851 0.4082 0.3364 -0.3396 -0.1935 0.5228]
Peaks = [0.7651 0.5676 0.5228]
expected output / sub arrays = [{0.2954 0.0861 -0.0204 0.0046 0.2297 0.7651} {-0.4482 -1.2974 0.3673 -0.7759 0.5676} {1.0851 0.4082 0.3364 -0.3396 -0.1935 0.5228}
Thanks in advance
Regards,
Abigail
1 Kommentar
Akzeptierte Antwort
madhan ravi
am 15 Jul. 2020
[lo, ii] = ismember(PeakS, x);
ix = diff([0, ii(lo)]);
Output = mat2cell(x, 1, ix)
2 Kommentare
madhan ravi
am 15 Jul. 2020
As Stephen comments if you use the second output of findpeaks() you replace ii(lo) in my code with the second output of findpeaks().
Weitere Antworten (1)
Parth Dethaliya
am 15 Jul. 2020
Bearbeitet: Parth Dethaliya
am 15 Jul. 2020
x = [0.2954 0.0861 -0.0204 0.0046 0.2297 ...
0.7651 -0.4482 -1.2974 0.3673 -0.7759 ...
0.5676 1.0851 0.4082 0.3364 -0.3396 -0.1935 0.5228];
Peaks = [0.7651 0.5676 0.5228];
SubArray=cell(1,size(Peaks,2));
Init=1;
for i=1:size(Peaks,2)
SubArray{i} = x(Init:find(x==Peaks(i)));
Init = find(x==Peaks(i))+1;
end
Seems the code is self-explanatory, still comment if you have any queries.
Hope it helps!!
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!