将matlab变量作为全局工作空间

时间:2013-09-05 13:46:51

标签: matlab function global-variables global

在工作区中我制作一个矩阵。

enter image description here

现在我可以在脚本中访问变量了。就像做变量(2)将返回4。

但在像

这样的功能中
function y= getvariable(x)

y=Variable(x)
end

我收到错误

   y=getvariable(2)
    ??? Undefined function or method 'Variable' for input
    arguments of type 'double'.

    Error in ==> getvariable at 3
    y=Variable(x)

那么如何使Variable矩阵全局化以便我可以通过任何函数访问它?

3 个答案:

答案 0 :(得分:6)

虽然你可以使用全局

>> global Variable = rand(50,12);

...

function y = getvariable(x)

     % Always needed
     global Variable;

     % Here ya go
     y = Variable;

end

MUCH 更好的选择是使用

function x = getvariable(x)
     % no body needed    
end

你称之为

>> y = getvariable(Variable);

(当然,对于这个人为的例子,这只会等于

>> y = Variable;

尽管全局变量存在一些合理的用例,但一般来说它们会使代码陷入困境并使其更容易出错并且难以调试。 Have a read关于这个问题。

答案 1 :(得分:5)

正如@rody建议的那样,在函数

中传递矩阵和x

我只是举个例子来说清楚。

就像你想要访问变量矩阵的第10个元素,所以将函数设为

function y= getvariable(matrixname,no)
y=matrixname(no)
end

如果您想访问Variable的第3个元素,请键入

Y =的getVariable(可变,3)

你将得到第3个元素

答案 2 :(得分:3)

  1. 在您的工作区中定义之前调用global Variable
  2. 在您的函数
  3. 中使用之前调用global Variable

    但是我建议你考虑将变量传递给函数的其他方法,因为全局变量可能会在调试过程中造成困难。