我在代码中以下面的方式操作全局变量。我希望每次都保存到全局变量并保留其内容以便扩展。如果我声明函数输出是这个变量,如果是巨大的结构,它可能会显着减慢我假设。怎么做?
function test()
global n1;
n1 = [1 2 3];
for x=1:10
% [n1] = global_up(n1,x); % no need for output parameter, as n1 is global right?
f_up(n1,x);
end
end
function f_up(arg1,arg2) %function [arg1] = f_up(arg1,arg2) is wrong?
global n1; % need to write it in every function ?
arg1 = [arg1 arg2];
end
答案 0 :(得分:1)
我真的不明白你想要做什么,但全局变量几乎绝对不是你要走的路。只需将变量作为参数传递:
function test()
n1 = [1 2 3];
for x=1:10
n1 = f_up(n1,x);
end
end
function arg3 = f_up(arg1,arg2)
arg3 = [arg1 arg2];
end
但是如果你解释一下这段代码的重点,你可能会得到一个更好的解决方案。因为它代表f_up
实际上没有做任何事情(即它封装了已经非常简洁而没有任何好处的语法)
答案 1 :(得分:0)
编辑:请考虑此问题,以便对您的实际问题进行讨论:How to modify an array in function?
我认为您想要做的是通过引用调用,全局变量的使用是不必要的。
你有一个变量x
,你想把这个变量赋给一个函数,你希望函数直接对x
进行操作,这样这些操作就可以在{{1在你的功能之外。
这称为x
。 Matlab不支持简单变量。
然而,你可以使用一个来自handle - 类的对象。这将为您提供所需的行为。
如果您不想使用对象,则必须在函数中使用return参数。不要使用全局变量,它们会使你的代码不可读,几乎肯定会导致错误。