我试图开始使用Matlab / Octave,并且很难确定如何将程序组织成函数。目前我正在尝试编写一个简单的程序,将两个数字相加并显示结果,并通过函数完成添加。我本以为这会起作用:
% test.m
close all;
clear all;
num1 = 2;
num2 = 2;
result = myAdd(num1, num2);
disp(result); % this should display 4 ??
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function retval = myAdd(var1, var2)
retval = var1 + var2;
end
使用Octave 4.0.0运行上述内容时,出现以下错误:
error: 'myAdd' undefined near line 7 column 10
error: called from
test at line 7 column 8
我已经尝试过将函数放在第一位,将测试部分放在第二位,同时将函数放在一个单独的文件中并在同一目录中使用main.m文件调用myAdd函数,都会导致错误。
所以这是我的问题:
- Matlab / Octave有一个主要的等价物吗?
- 口译人员如何知道从哪里开始?它是否会自动转到程序的第一行,或者是否有某个函数名称可以用来启动该函数,因为函数main()在C / C ++中?
- 在一个规模很大的Python程序中,我通常的做法是按如下方式组织:
# some_python_program.py
import abc
import xyz
###################################################################################################
def main():
# stuff to get program started here
# end main
###################################################################################################
def function1():
# specific function here
# end function
###################################################################################################
def function2():
# specific function here
# end function
###################################################################################################
if __name__ == "__main__":
main()
有没有办法在Matlab / Octave中进行等效?
如果某人可以提供关于主要等效物的方向和/或如何在Matlab / Octave中组织功能,请告知,谢谢。
答案 0 :(得分:4)
例如,您想创建一个名为myadd
的函数。您应该创建一个名为myadd.m
的文件,其内容为:
function out = myadd(a,b)
out = a+b;
end
然后,只要您的文件在您的路径上(将其保存到您的MATLAB文件夹或将其放在当前工作目录中),您可以从命令窗口调用它,如下所示:
>> myadd(5,6)
ans =
11
每个文件(名称与文件名匹配的文件)只能公开使用一个函数。但是,如果您计划仅使用该函数,则仍可以为每个文件定义多个函数。例如,如果您有一个名为foo.m
的文件,则可以执行以下操作:
function out = foo(a,b)
out = fun(a,b);
end
function out = fun(a,b)
out = a * b;
end
这样您就可以从命令窗口调用foo(5,6)
,但fun(5,6)
会导致错误:Undefined function or variable 'fun'
。
详细了解local functions和nested functions。
希望这有用!