有没有办法在main函数中定义一个变量并在所有子函数中使用它?

我试图将变量声明为global,但似乎我应该在所有函数中重复一次。我想知道全局变量到底有什么好处!
将变量用作global
main program
global x
syms x
subfunc1
subfunc2
...和
subfunc1
global x和
subfunc2
global x(也许这种格式提醒我们在函数中有全局变量,但如果我们在函数中使用与Matlab关键字相同的变量名称会更好)我不想将变量作为所有函数参数导入,也不想在所有函数中一次又一次地声明该变量。任何帮助都将不胜感激。
发布于 2017-02-01 09:07:02
如果你真的想访问同一个变量,那么我知道在Matlab中只有两种方法:嵌套函数(由answer from @ and thom8描述)和全局变量。还有其他将数据放入函数的方法,比如getappdata、guidata和(我个人最喜欢的:)传递函数参数。但是,这些方法会复制变量。
也许您应该问问自己,为什么要避免复制变量。如果您担心性能,您应该知道Matlab有效地将变量仅用作对数据的引用,因此您可以安全地将变量发送到函数(从而复制变量),而无需复制实际数据。在修改函数内部的数据后,第一次是实际复制数据。所有这一切对我们来说都是完全看不见的,除非在大量复制过程中可能会出现性能下降。这称为写入时复制。
全局变量可以be used to optimize Matlabs performance,通过以避免复制数据的方式进行编码,但这确实需要知道您正在做什么,并且它会暴露出很多陷阱,特别是当您的项目变得越来越大时。
发布于 2016-12-15 01:29:53
您可以做的一件事是将其他函数定义为main函数的子函数。类似于下面的内容
subFunc1和subFunc2这两个函数都应该能够访问您在mainFunc中定义的数据
function mainFunc()
variable1 = 'stuff';
variable2 = 5;
function subFunc1()
%do stuff
end
function subFunc2()
%do more stuff
end
end编辑1个
当然,您可以在子函数中使用的mainFunc中定义全局数据,但我不建议这样做,因为它可能会以意想不到的方式发生更改。
https://stackoverflow.com/questions/41144036
复制相似问题