用嵌套矩阵求和的MATLAB

用嵌套矩阵求和的MATLAB,matlab,Matlab,我试图在matlab中找到以下矩阵的和[1 1;1 2 1 2;4 5 3 2;1 3 2 4;10 11 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 为什么

我试图在matlab中找到以下矩阵的和[1 1;1 2 1 2;4 5 3 2;1 3 2 4;10 11 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

为什么不直接使用?

您需要更改以下代码:

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
注意各种修改:

  • 初始化
    sum=0
    。如果你在解释器中使用这个,你将从前面的结果开始,保证你没有得到正确的结果
  • 累积这些值。如果在每次迭代时都指定sum,则会丢弃其他迭代的结果
  • 如果要在内部循环中硬编码
    j+1
    j+2
    等,那么编写外部循环没有意义
  • 修复内部循环,使其从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
    

    @阿尔贝托:好的!然后请编辑您的问题并添加该事实。此外,请将你的问题标记为“家庭作业”;对于j=1:4,对于i=j:6,sum=A(j,:)+A(j+1,:)+A(j+2,:)end-end为什么你的
    i
    循环从
    j:6
    开始,而不是
    1:6
    ?您是否注意到每次迭代都会重新计算
    sum
    (覆盖上一次迭代的值)?使用sum作为变量名是一个非常糟糕的选择。啊,我看到您只是简单地修复了代码:)那么,Alberto可以忽略我的答案。很抱歉!我发现代码块之外的注释更具可读性,不过:-)另外,不应该使用与函数名等效的变量名,例如
    sum