所有变量都在主脚本中声明,如下所示:
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”。
如何在主脚本和函数中使用相同的数据数组?
答案 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的好方法。