Borrar filtros
Borrar filtros

How to make a for faster?

1 visualización (últimos 30 días)
Oliver Lestrange
Oliver Lestrange el 29 de Ag. de 2020
Editada: Bruno Luong el 29 de Ag. de 2020
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 comentario
Bruno Luong
Bruno Luong el 29 de Ag. de 2020
Editada: Bruno Luong el 29 de Ag. de 2020
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.

Iniciar sesión para comentar.

Respuestas (2)

KSSV
KSSV el 29 de Ag. de 2020
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) ;
  1 comentario
Oliver Lestrange
Oliver Lestrange el 29 de Ag. de 2020
I am sorry, I forgot to mention what minimum is.
I've already edit the post.
minimum = min(ix,iy);

Iniciar sesión para comentar.


Bruno Luong
Bruno Luong el 29 de Ag. de 2020
Editada: Bruno Luong el 29 de Ag. de 2020
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

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by