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?
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


0