Array doesn't get filled - for loop
1 次查看(过去 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!