Array doesn't get filled - for loop
3 ビュー (過去 30 日間)
古いコメントを表示
hello, the arrays idx_u, idx_o, X wont get filled by the for loop, why?
idx_u = zeros(m,1);
idx_o = zeros(m,1);
X = zeros(m,1);
for r = 1:m
if nnz(gradMag(:,r)) > 0
idx_o = find(gradMag(:,r),1,'first');
idx_u = find(gradMag(:,r),1,'last');
X = r;
else
idx_o = NaN;
idx_u = NaN;
X = r;
end
end
0 件のコメント
採用された回答
dpb
2016 年 10 月 24 日
編集済み: dpb
2016 年 10 月 24 日
Because you didn't write the array indices inside the loop; you filled each array with a constant each pass thru the loop; the last value found will be the value remaining for all elements.
idx_u = nan(m,1); idx_o = idx_u; % fill w/ NaN initially; will overwrite finite locations
for r = 1:m
if any(gradMag(:,r))
ix=find(gradMag(:,r)); % get all locations in one call
idx_o(i)=min(ix); % I'm guessing but you can test that is as
idx_u(i)=max(ix); % fast or faster than two calls to FIND()
end
end
X=1:m; % is just the index vector; no need for inside loop
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!