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;

Antworten auf die Frage(3)

Ihre Antwort auf die Frage