我有以下代码
function W = robust(a,c,y)
W = pinv(a' * c * a) * a' * c *y;
endfunction
但是,当我尝试运行它时,我收到以下错误。
error: 'a' undefined near line 4 column 12
error: called from
robust at line 4 column 5
这完全没有意义。我在这里做错了什么?
编辑:我通过emacs调用此方法。所以,我使用命令&octave-source-file',它在低位八度进程中执行文件。我看到如果这个缓冲区不在我启动进程的地方就可以了。如果我在另一个文件上启动八度音程,然后将此文件发送到下级进程,它将评估该函数。答案 0 :(得分:3)
Octave从MATLAB继承了"函数文件"的概念,不同于"脚本文件"。 A"功能文件"假定在执行文件时包含需要调用的函数。因此,当你想到"我定义它"时,Octave认为你正在调用该函数。既然你没有给出任何输入,那就是"未定义的变量"错误。
一旦Octave找到名称匹配的文件,就会读取该文件的内容。如果它定义了单个函数,则编译并执行它。
与函数文件不同,脚本文件不能以关键字函数开头。如果是这样,Octave将假定它是一个函数文件,并且它定义了一个应该在定义后立即进行评估的函数。