0

我做了什么

N = input ('N=');
x = 1:N

for x= (1:N)
    if mod(x,2) == 0
        t = x;
        b = sum(t)
    end
end

这个对吗?

为什么它一直给我这个错误信息?

"??? 索引超出矩阵维度。

==>examPractise1 在 7 时出错

b = 总和(t)"

4

1 回答 1

3
N = input ('N=');
b=0;
for x= (1:N-1)
    if (mod(x,2) == 0)
        b=b+x;
    end
end
disp(b);

几点:

  1. 在程序开始时清除b,否则之前的计算将影响当前的
  2. Matlab 是一个向量系统,当你这样1:N做时,它会生成一个向量,例如[1 2 3 4],当你创建for循环时,你真的1:(1:N)会感到困惑,这充其量是令人困惑的。应该是1:N
  3. 不知道为什么你需要一个名为的变量t
  4. sum应改为标准+操作。
  5. 不要忘记这x将转到特定的最后一个数字,因此您应该避免实际添加N
于 2013-05-13T00:09:44.807 回答