I'm getting an error (Index in position 1 exceeds array bounds)
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Jeffrey Clark
2022 年 10 月 5 日
@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.
その他の回答 (1 件)
Davide Masiello
2022 年 10 月 5 日
Do this instead
ind_out = signal(1,:) > max_thresh; %find index of point>thresh
onset = signal(ind_out,1); %return onset time
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Environment and Settings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!