Octave说变量是未定义的,即使它们是

Octave说变量是未定义的,即使它们是,octave,Octave,我有以下代码 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

我有以下代码

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”,它在次八度进程中执行文件。我发现,如果这个缓冲区不是我启动进程的地方,它就会工作。如果我在另一个文件上启动倍频程进程,然后将该文件发送给下一个进程,它将评估函数。

倍频程从MATLAB继承了“函数文件”的概念,与“脚本文件”不同。假设“函数文件”包含一个函数,该函数需要在文件执行时调用。所以当你认为“我在定义它”时,Octave认为你在调用那个函数。由于没有输入,所以存在“未定义变量”错误

:

一旦Octave找到一个名称匹配的文件,就会读取该文件的内容。如果它定义了单个函数,则编译并执行该函数

:

与函数文件不同,脚本文件不能以关键字函数开头。如果是这样的话,Octave将假定它是一个函数文件,并且它定义了一个函数,一旦定义了该函数,就应该对该函数进行求值


Octave从MATLAB继承了“函数文件”的概念,与“脚本文件”不同。假设“函数文件”包含一个函数,该函数需要在文件执行时调用。所以当你认为“我在定义它”时,Octave认为你在调用那个函数。由于没有输入,所以存在“未定义变量”错误

:

一旦Octave找到一个名称匹配的文件,就会读取该文件的内容。如果它定义了单个函数,则编译并执行该函数

:

与函数文件不同,脚本文件不能以关键字函数开头。如果是这样的话,Octave将假定它是一个函数文件,并且它定义了一个函数,一旦定义了该函数,就应该对该函数进行求值


首先定义
a
c
y
,然后调用该函数。你不能按原样运行函数,但我应该可以加载它,对吗?适用于另一个函数,类似于函数y=sigmoid(z)y=(1./(1+e.^(-z));EndFunction您是如何“运行”该函数的?您的函数必须使用输入调用,而不是F5。我通过octave cli(通过emacs完成)加载它。基本上,这与在cli中定义函数相同。这是一个缺少最重要部分的典型问题:“哪个操作导致错误”。您已经打开了emacs,创建了一个新文件foo.m(将真实文件名添加到您的问题中),然后?我希望您正在调用您的函数,就像Sardar说的那样,使用inputsFirst define
a
c
,和
y
,然后调用该函数。你不能按原样运行函数,但我应该可以加载它,对吗?适用于另一个函数,类似于函数y=sigmoid(z)y=(1./(1+e.^(-z));EndFunction您是如何“运行”该函数的?您的函数必须使用输入调用,而不是F5。我通过octave cli(通过emacs完成)加载它。基本上,这与在cli中定义函数相同。这是一个缺少最重要部分的典型问题:“哪个操作导致错误”。您已经打开了emacs,创建了一个新文件foo.m(将真实文件名添加到您的问题中),然后?我希望您正在调用您的函数,就像Sardar所说的那样,使用输入