2013-09-28 69 views
0
“类型‘双重’的输入参数的未定义函数或方法X”

我试图与递归谢尔宾斯基三角形,但我得到这个错误:Matlab的错误:递归

??? Undefined function or method 'sierpinski' for input arguments of type 'double'. 

我明白,这与Matlab没有找到我的函数的路径,但奇怪的是,它可以找到我的主要sierpinski(x,y,n)函数,但不是我想稍后调用的相同函数,以便获得递归。

我的代码看起来是这样的:

function sierpinski(x,y,n) 
... 
sierpinski(x2,y2,n-1) 
end 
sierpinski([0,1,0.5],[0,0,1],4) 

我将不胜感激,如果有人可以帮助我解决这个:)

+0

你能否提供更多的代码作为上下文?另外,当你从命令窗口调用函数时,会出现错误信息,还是在'sierpinski'代码中引发错误? – Alan

+0

你的目录中存在这个函数吗添加到路径中? – user1343318

+0

'函数的Sierpinski(X,Y,N) 暂缓 如果n == 0 填充(X,Y, 'R') 否则 X2 = [(X(2)-x(1))/ 2,(x(2)-x(3))/ 2,x(3)+(x(2)-x(3))/ 2]。 y2 = [y(1),y(3)/ 2,y(3)/ 2]; 谢尔宾斯基(X2,Y2,N-1) 端 端 的Sierpinski([0,1,0.5],[0,0,1],2)' 我的代码还没有准备好,所以我知道我我可能不会用到目前为止的代码来获得Sierpinski三角形。无论如何,我想得到的东西,而不是错误。 – Djamillah

回答

1

我无法重现您报告的第一个错误。它可能与文件不在路径上有关。避免这种情况的最简单方法是将工作目录更改为包含.m文件的目录。

您在您的评论描述第二个错误是由于这样的事实,你想拥有的一个文件,该文件是一个Matlab的功能,并在同一时间MATLAB程序。两者都有扩展.m,但第一个包含一个函数定义(可以用参数调用,具有局部变量,并且可以返回值的东西),另一个包含一系列matlab语句,这些语句要像执行一样他们在命令窗口中被逐个输入。

执行以下操作:

- 做一个MATLAB函数文件sierpinski.m只包括你的函数代码:

function sierpinski(x,y,n) 
hold on 
if n == 0 
    fill(x,y,'r') 
else 
    x2 = [(x(2)-x(1))/2, (x(2)-x(3))/2, x(3)+(x(2)-x(3))/2]; 
    y2 = [y(1), y(3)/2, y(3)/2]; 
    sierpinski(x2, y2, n-1) 
end 

将文件保存到当前目录或路径的目录。

- 在命令窗口中,输入语句sierpinski([0,1,0.5],[0,0,1],2)。结果是一个带有倾斜的红色三角形的数字窗口。不是一个谢尔宾斯基三角形,但我想第一步就完成了。 ;-)

而不是在命令窗口中输入该语句,您也可以制作一个Matlab脚本文件。用名称编辑文件run_sierpinski.m,其中包含声明:

sierpinski([0,1,0.5],[0,0,1],2) 

再次,将文件保存到当前目录或路径的目录。

现在,您可以通过单击GUI中的“运行”按钮(绿色三角形左右)或在命令窗口中输入run_sierpinski来运行该脚本。无论如何,结果应该与直接输入声明相同。