Ulepszanie kodu konstrukcyjnego MATLAB Matrix: Lub kodowanie wektoryzacji dla początkujących
Napisałem program w celu skonstruowania części 3-pasmowej macierzy transformacji falkowej. Jednak biorąc pod uwagę, że rozmiar macierzy wynosi 3 ^ 9 X 3 ^ 10, upłynięcie trochę czasu, zanim MATLAB skończy ją konstruować. Dlatego zastanawiałem się, czy istnieje sposób na ulepszenie kodu, którego używam, aby działał szybciej. Używam n = 10 podczas uruchamiania kodu.
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;