八度,错误未定义变量,无法识别数据数组作为函数的输入

时间:2018-10-09 13:14:26

标签: octave

所有变量都在主脚本中声明,如下所示:

DataArray.a = 1;
DataArray.b = 2;
d = 3;


DataArray = test1_2 (d, DataArray);

disp(DataArray);

主脚本还可以使用某些功能。 这些函数的输入是在主脚本中声明的数据数组:

function DataArray = test1_2 (d, DataArray )

g = DataArray.a;
h = DataArray.b;

DataArray.result = d * g* h;
endfunction

当我运行主脚本时,发生以下错误:

  

错误:第3行第5列附近未定义'DataArray'
  错误:在第3行第3列的test1_2中调用

例如,如果我输入DataArray.a,则八度知道它已声明并给出“ 1”。

如何在主脚本和函数中使用相同的数据数组?

1 个答案:

答案 0 :(得分:0)

当你说

DataArray = test1_2 (DataArray);

您的test1_2函数用一个参数调用。函数内部:

function DataArray = test1_2 (d, e, f, DataArray )

仅定义了第一个参数d。其他参数仍未定义。请注意,函数内部的参数名称与您用来调用函数的变量名称完全无关。也就是说,在函数内部,变量d包含函数外部的DataArray,而不是函数外部变量d的内部。 Octave不会尝试像这样匹配变量名。

因此,假设您的函数需要4个输入参数,则应按以下方式调用它:

DataArray = test1_2(d, e, f, DataArray )

我建议您阅读MATLAB的优秀教程,例如these about writing functions。如您所知,Octave主要模仿MATLAB语法,因此MATLAB教程也是入门Octave的好方法。