How to make a for faster?
2 次查看(过去 30 天)
显示 更早的评论
Hi,
I've the following code.
ix = ismember(idx_x(:),x(:));
iy = ismember(idx_y(:),y(:));
minimum = min(ix,iy);
for idx_=1:18:length(iy)
for idx=1:18:length(ix)
if minimum(idx)==1
%index =[index;idx];
altura_raio_direto = [altura_raio_direto; heights(idx)];
% saber indices de heights que fazem parte do bresenham
end
iii = iii+1;
disp(iii);
end
end
heights is an array of 90 000 positions, as well as iy and ix.
How can I make this faster?
Thanks!
1 个评论
Bruno Luong
2020-8-29
编辑:Bruno Luong
2020-8-29
You must think what is your double-loops are looping on. As long as you still see the need of double-loop you are completely off of understanding ISMEMBER and linear indexing.
回答(2 个)
KSSV
2020-8-29
idx_=1:18:length(iy) ;
idx=1:18:length(ix) ;
if min(idx)==1
altura_raio_direto = heights(idx) ;
end
altura_raio_direto = repmat(altura_raio_direto,1,length(idx_1)-1) ;
Bruno Luong
2020-8-29
编辑:Bruno Luong
2020-8-29
ix = ismember(idx_x(:),x(:));
iy = ismember(idx_y(:),y(:));
ixy = ix & iy;
idx = 1:18:size(ixy,1);
altura_raio_direto = heights(idx(ixy(idx)));
%altura_raio_direto = repmat(altura_raio_direto,length(idx,1); % outer loop concatenate the same thing over and over
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!