全局变量改变Matlab

时间:2013-03-20 12:53:07

标签: matlab parameters global-variables

我在代码中以下面的方式操作全局变量。我希望每次都保存到全局变量并保留其内容以便扩展。如果我声明函数输出是这个变量,如果是巨大的结构,它可能会显着减慢我假设。怎么做?

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

2 个答案:

答案 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参数。不要使用全局变量,它们会使你的代码不可读,几乎肯定会导致错误。