官方淘宝店 易迪拓培训 旧站入口
首页 > 微波射频 > 射频工程师交流 > matlab编程一问

matlab编程一问

12-08
对于下面的程序段:
a = ones(3,3,3);
gj = [ 0 1 2 ];
for i = 1:3
    for j = 1:3
        for k = 1:3
            a(i,j,k) = gj(1,j)*a(i,j,k);
        end
    end
end
由于实际矩阵很大,循环特慢,
不知如何改写成矢量方式,请高手指点,谢谢!

是不是可以改成这样:
a = ones(3,3,3);
gj = [ 0 1 2 ];
    a(1:3,1:3,1:3) = gj(1,1:3)*a(1:3,1:3,1:3);
          
end

这样维数不对吧?
j,k的循环可以交换过来,看得清楚些,
就是
for i,
    for k.
        a(i,:,k) = gj(1,:)a(i,:,k);
    end k
end i
也就是说
for j =1:3
   a(:,j,:) = gj(1,j) * a(:,j,:);
end
....,不会吧?

Top