Verbesserung des MATLAB-Matrix-Konstruktionscodes: Oder Code-Vektorisierung für Anfänger
Ich habe ein Programm geschrieben, um einen Teil einer 3-Band-Wavelet-Transformationsmatrix zu konstruieren. Angesichts der Größe der Matrix von 3 ^ 9 X 3 ^ 10 dauert es jedoch eine Weile, bis MATLAB den Aufbau abgeschlossen hat. Daher habe ich mich gefragt, ob es eine Möglichkeit gibt, den von mir verwendeten Code zu verbessern, damit er schneller ausgeführt wird. Ich benutze n = 10 beim Ausführen des Codes.
B=zeros(3^(n-1),3^n);
v=[-0.117377016134830 0.54433105395181 -0.0187057473531300 -0.699119564792890 -0.136082763487960 0.426954037816980 ];
for j=1:3^(n-1)-1
for k=1:3^n;
if k>6+3*(j-1) || k<=3*(j-1)
B(j,k)=0;
else
B(j,k)=v(k-3*(j-1));
end
end
end
j=3^(n-1);
for k=1:3^n
if k<=3
B(j,k)=v(k+3);
elseif k<=3^n-3
B(j,k)=0;
else
B(j,k)=v(k-3*(j-1));
end
end
W=B;