Index超过MATLAB中数组元素数(9)



所以我得到一个错误,我相信n1大于数组后n变成n = 3,这是在ma给出的错误。代码的前提是取1、2、3、4、5、6、7、8、9等每组的平均值。我很确定我必须改变长度,但不知道如何去做。我该怎么办?下面是代码:

clear all
mdata = [1 2 3 4 5 6 7 8 9];
n1 = 1;
k = 1;
for n = 1:length(mdata)
ma(n) = (1/(k + 1)) * sum(mdata(n1:n1 + k));
n1 = ((n1 + k) + 1);
k = k + 1;
std_ma = std(mdata);
end

错误信息:

Index超过数组元素数(9).

untitled22出错(第11行)Ma (n) = (1/(k + 1)) * sum(mdata(n1:n1 + k));

问题是,您正在通过循环的每一步用n1+k+1替换n1的值。在第4次迭代开始时,n1=10k=4,这意味着您试图取元素的和10:14,但数组只有9个元素。

从你的问题中不清楚你试图通过循环的所有迭代计算的平均值是多少,因此很难多说。但是,最有可能的是,你不需要自己手动计算平均值。只需定义在该迭代中要处理的数据子集,然后取其平均值。

我也猜你想在循环结束时修改std_ma的赋值,只对你正在处理的数据子集执行std。当前,您正在对mdata中的所有值进行计算,并重复相同的计算9次。

相关内容

  • 没有找到相关文章

最新更新