在MATLAB中矢量化双循环

时间:2013-11-20 23:13:48

标签: matlab vectorization

如何在MATLAB中对以下内容进行矢量化?

n=1000;
m=n;
for i=1:n
    T(i,i)=i.^2;
    for j=1:m
        x(i,j)=2*((i+j)^(-2)-(i-j)^(-2))/pi;
    end
    x(i,i)=0;
end

for i=1:n
    for j=1:m
        if mod(i,2)==mod(j,2)
            x(i,j)=0;
        end

    end
end

1 个答案:

答案 0 :(得分:2)

T

T = diag((1:n).^2);

x

[ii jj] = meshgrid(1:n,1:m);
x = 2*((ii+jj).^(-2)-(ii-jj).^(-2))/pi;
x(mod(ii,2)==mod(jj,2))=0;