Улучшение MATLAB Matrix Construction Code: или код векторизации для начинающих
Я написал программу для построения части 3-полосной матрицы вейвлет-преобразования. Однако, учитывая, что размер матрицы равен 3 ^ 9 X 3 ^ 10, MATLAB требуется некоторое время, чтобы завершить ее построение. Поэтому мне было интересно, есть ли способ улучшить код, который я использую, чтобы он работал быстрее. Я использую n = 10 при запуске кода.
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;