Matlab - Loop lento con gran cantidad de datos

 
Vista:

Loop lento con gran cantidad de datos

Publicado por Gustavo (5 intervenciones) el 19/09/2014 13:03:02
Quiero hacer una tabla "C" que contenga la diferencia entre cada una de las columnas de mismas dimensiones de "A" y "B" (que suelen ser de (100.000x100). Es decir primera columna de A- primera columna de B , luego primera columna de A - 2 de B [...] Ultima columna de A - Última de B por lo que el número de columnas de C sería el cuadrado de las dimensiones de A (o de B, da igual)

Para ello he diseñado este sencillo código:


z=1
[a b]=size(A)
C=ones(a,b^2)


for i=1:b
for j=1:b

if (A(:,i)>0) & (B(:,j) >0)


C(:,z)=A(:,i)-B(:,j)

else C(:,z)=0


end
z=z+1
end
end


Para matrices de prueba que he hecho pequeñas va bien , pero con fuego real (100000x100) es demasiado lento. Habría alguna manera de agilizar el cálculo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder