Matlab未定义变量或函数输出中的错误

Matlab未定义变量或函数输出中的错误

问题描述:

QuestionMatlab未定义变量或函数输出中的错误

附加图像有我正在处理的问题。以下是我的m文件中的代码和我在命令窗口中获得的输出。 M-文件编号:

function p = PolyEval (n, a, y, x)  
    for i = n+1:2 
     p = a(i - 1) + (x + y(i - 1))*a(i); 
     a(i-1) = p; 
    end 
    fprintf('%6.0f %18.8f \n', p); 
end 

命令窗口代码和输出:

PolyEval(5, [-1, 3.3, 0, -2.2, 5, -1.6], [-1, 1, -1, 1, -1], 1.53) 

未定义的函数或变量 “p”。

PolyEval中的错误(第6行) fprintf('%6.0f%18.8f \ n',p);

关于代码和问题,n是控制两个数组大小的变量,a是由n + 1个变量组成的一维数组,y是一个由n组成的一维数组变量,x是用于计算的变量。

我在一张纸上测试了代码算法,它应该返回一个6.65的值,但在这种情况下,它给了我上面的错误。

你们能否帮我理解我为什么会出错?请看看我想要写这个matlab代码的问题和方程组成的图像。

+0

您的for循环不指望您认为它的作用。当用笔和纸做的时候,在不同迭代中'i'的值是多少? – Daniel

+0

我的值应该从6降低到2在每次迭代中减少1 – Mihir

循环for i = n+1:2是使用步骤+1(这是默认值)从6到2的循环。每当起始值高于最终值时,循环根本就不执行。你想要for i = n+1:-1:2

+1

非常感谢Daniel,for循环的变化起作用,并且我还必须将值初始化为p,所以这是最终的代码给我正确的答案 ' 函数p = PolyEval(n,a,y,x) p = a(n + 1);对于i = n:-1: p = a(i)+(x + y(i))* p; 结束 fprintf('%6.0f%18.8f \ n',p); end' – Mihir