%example threshold detection code
function [MAXES] = identifyMaximums(Avg)
X = Avg;
threshold = 30;
[Xon, Xoff] = detectThreshold(X,threshold);
nSteps = length(Xon);
firstOff = 1;
while Xoff(firstOff) > Xon(1)
firstOff = firstOff+1;
end
lastOn = nSteps;
while Xon(lastOn) > Xoff(end)
lastOn = lastOn-1;
end
%Adjust ons and offs
Xon_align = Xon(1:lastOn);
Xoff_align = Xoff(firstOff:end);
%Count number of steps after aligning
nStepsFinal = length(Xon_align);
%Initialize matrix of maximums
MAXES = NaN(nStepsFinal,1);
for i = 1:nStepsFinal
MAXES(i) = max(X(Xon_align(i):Xoff_align(i)));
end
function [Ons,Offs] = detectThreshold(signal,threshold)
overThreshold = signal>threshold;
onOffs = diff(overThreshold);
Offs = find(onOffs==-1)+1;
Ons = find(onOffs==1);
end
end
Error:
Index exceeds the number of array elements. Index must
not exceed 0.
Error in identifyMaximums (line 14)
while Xoff(firstOff) > Xon(1)
Error in load_data_10_15 (line 119)
[MAXES] = mean(identifyMaximums(Avg));
Data (Avg) that is being processed:attached image
Hello I hope all is well. I am currently working on a side project where I am trying to match data from a sensor to a force plate. At the moment I am trying to linearize the data. To do so, I must collect the peak values. For some reason I am getting this error and I am not sure why. If you have the time, please look over my work and provide some guidence.
Thank you!

 採用された回答

Steven Lord
Steven Lord 2022 年 11 月 28 日

0 投票

You may want to take a look at the islocalmax function.

1 件のコメント

Hanna Armstrong
Hanna Armstrong 2022 年 11 月 28 日
Hi Steven, So I did the localmax function and plotteded it and this is what I am getting, do you have any reccomendations in regards to filtering out the bottom values?

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2022 年 11 月 28 日
編集済み: Matt J 2022 年 11 月 28 日

0 投票

If you have the time, please look over my work and provide some guidence.
In detectThreshold(), you need to add control logic to handle the case where find() returns empty [].
Offs = find(onOffs==-1)+1;
Ons = find(onOffs==1);

2 件のコメント

Hanna Armstrong
Hanna Armstrong 2022 年 11 月 28 日
Hi Matt, thank you for responding!
If you can, may you please elaborate on what you mean by adding control logic? At the moment I don't understand how I am supposed to change it.
Thanks.
Matt J
Matt J 2022 年 11 月 28 日
I left it to you because only you knowwhat's supposed to happen when no peaks are detected.

サインインしてコメントする。

カテゴリ

製品

リリース

R2022b

質問済み:

2022 年 11 月 28 日

コメント済み:

2022 年 11 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by