I'm getting an error (Index in position 1 exceeds array bounds)
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Majd AG
am 5 Okt. 2022
Kommentiert: Majd AG
am 8 Okt. 2022
I'm trying to find the onset point of a transient signal by comparing it with a threshold value calculated based on the base-level of this signal. However, when I try to find the index of such a point it returns and index out of bounds, I can't figure out why. Here's my code
signal = maximum_env_ch2; % 65536x2 array (time, voltage)
max_thresh = max(signal(1:floor(0.3*end),2)); %threshold calculated form the first part of the signal (zero-level)
ind_out = find( signal > max_thresh ,1); %find index of point>thresh
onset = signal(ind_out,1); %return onset time
0 Kommentare
Akzeptierte Antwort
Jeffrey Clark
am 5 Okt. 2022
@Majd AG, find is going to look at the entire signal as if you had written signal(:) > max_thresh; find will return values beyond the first index limit. I expect you want:
ind_out = find( signal(:,2) > max_thresh ,1);
But also note that since max_thresh is from the signal it may be the actual max and therefore there is no signal(:,2)>max_thresh; find will return ind_out as an empty array which will also fail as an index.
Weitere Antworten (1)
Davide Masiello
am 5 Okt. 2022
Do this instead
ind_out = signal(1,:) > max_thresh; %find index of point>thresh
onset = signal(ind_out,1); %return onset time
0 Kommentare
Siehe auch
Kategorien
Mehr zu Multirate Signal Processing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!