使用嵌套For的MATLAB矩阵求和

时间:2010-10-27 22:23:29

标签: matlab

我试图在matlab中找到以下矩阵的总和[1 1 1 1; 1 2 1 2; 4 5 3 2; 1 3 2 4; 10 11 1 1; 90 9 2 1]

我正在尝试使用嵌套的for语句,但我一直在收到错误。请帮忙

必须使用嵌套

我的代码:

A = [1 1 1 1; 1 2 1 2; 4 5 3 2; 1 3 2 4; 10 11 1 1; 90 9 2 1];
for j=1:4,
  for i=1:6,
    sum = A(j,:)+A(j+1,:)+A(j+2,:)
  end
end

3 个答案:

答案 0 :(得分:2)

您需要更改以下代码:

A = [1 1 1 1; 1 2 1 2; 4 5 3 2; 1 3 2 4; 10 11 1 1; 90 9 2 1];
for j=1:4,
    for i=j:6,
        sum = A(j,:)+A(j+1,:)+A(j+2,:);
    end
end

到此:

A = [1 1 1 1; 1 2 1 2; 4 5 3 2; 1 3 2 4; 10 11 1 1; 90 9 2 1];
sum = 0;
for j=1:4,
    for i=1:6,
        sum = sum + A(j,i);
    end
end

注意各种修改:

  1. 初始化sum=0。如果你在口译员中使用这个,那么你将从之前的结果开始,保证你没有得到正确的结果。
  2. 累积值。如果在每次迭代时分配sum,则会丢弃其他迭代的结果。
  3. 如果要在内循环中对j+1j+2等进行硬编码,那么编写外循环是没有意义的。
  4. 修复内循环,使其开始迭代为1.
  5. 使用分号来抑制内循环中的输出以获得干净的结果。

答案 1 :(得分:1)

我不会发布更正后的代码,而是会在您发布的代码中添加注释:

A = [1 1 1 1; 1 2 1 2; 4 5 3 2; 1 3 2 4; 10 11 1 1; 90 9 2 1];
% you are missing sum initialization here - you should first set sum to zero
for j=1:4, % there is no comma needed at the end
  for i=j:6,  % you want to iterate all the rows, from 1 to 6
    sum = A(j,:)+A(j+1,:)+A(j+2,:)  % you should be adding to the sum - i.e sum is sum + current field A(j, i)
  end
end

答案 2 :(得分:0)

为什么不使用sum()