5

In the workspace I make a matrix .

enter image description here

Now I can access the variable in script. Like doing Variable(2) will return 4.

But inside a function like

function y= getvariable(x)

y=Variable(x)
end

I get error

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

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

So how to make the Variable matrix global so that I can access it through any function?

4

3 回答 3

6

虽然你可以使用全局变量

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

...

function y = getvariable(x)

     % Always needed
     global Variable;

     % Here ya go
     y = Variable;

end

更好的选择是使用

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

你称之为

>> y = getvariable(Variable);

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

>> y = Variable;

)

尽管全局变量有一些合法的用例,但总的来说,它们往往会使您的代码变得意大利面,使其更容易出错并且更难调试。阅读有关该主题的内容。

于 2013-09-05T13:51:45.553 回答
5

正如@rody 建议的那样,在函数内部传递矩阵和 x

我只是举一个例子来说明问题。

就像您想访问变量矩阵的第 10 个元素一样,因此将函数设为

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

如果要访问 的第三个元素Variable,请键入

y=getvariable(变量,3)

你会得到第三个元素

于 2013-09-05T14:26:49.733 回答
3
  1. global Variable在工作区中定义之前调用
  2. global Variable在你的函数中使用它之前调用它

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

于 2013-09-05T13:49:28.240 回答