0

我正在尝试使用递归制作谢尔宾斯基三角形,但出现此错误:

??? 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)

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

4

1 回答 1

1

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

您在评论中描述的第二个错误是由于您试图同时拥有一个作为Matlab 函数Matlab 脚本的文件。两者都有扩展名.m,但第一个包含一个函数定义(可以用参数调用的东西,有局部变量,可以返回值),另一个包含一系列 matlab 语句,它们的执行就像它们一样在命令窗口中一一输入。

请执行下列操作:

sierpinski.m– 制作一个仅包含您的函数代码的 Matlab 函数文件:

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 脚本文件。编辑一个名为 eg 的文件run_sierpinski.m,其中包含以下语句:

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

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

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

于 2013-09-29T14:30:42.820 回答