循环中的索引超出界限(MATLAB)

时间:2011-11-29 21:46:10

标签: matlab

好的,我遇到了一个问题(可能是一个新手问题),但现在就说了:

for i=1:1:16;
    h=10^(-i);
    yDFC2(i)=(1/(2*1*h(i)))*(-1*valX+valX);
end
err2=abs(fDX(x1)-yDFC2);
loglog(h,err2,'b-');

每次运行此代码时,都会出现以下错误:

  

尝试访问h(2); index因界而错,因为numel(h)= 1

valX是通过确定用户输入的函数的图像而计算的变量; fDX是该函数的衍生物(两者都运行良好)。

这是为了绘制间距(h)与中心有限差分(CFD)中的误差。 for循环中的公式是CFD为n=2计算的一阶导数。

间距需要以10^(-i)为增量。

如果有人能帮我解决这个问题,我会非常感激。

1 个答案:

答案 0 :(得分:3)

如果你这样做

h = 10.^(-(1:1:16)); 
在for循环之外,你可以在里面正确访问h(i)。问题是你为每个传递创建一个标量h。