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

Moz*_*Moz 5 matlab global function global-variables

在工作区我制作一个矩阵.

在此输入图像描述

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

但在一个功能里面

function y= getvariable(x)

y=Variable(x)
end
Run Code Online (Sandbox Code Playgroud)

我收到错误

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

    Error in ==> getvariable at 3
    y=Variable(x)
Run Code Online (Sandbox Code Playgroud)

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

Rod*_*uis 6

虽然你可以使用全局变量

>> global Variable = rand(50,12);
Run Code Online (Sandbox Code Playgroud)

...

function y = getvariable(x)

     % Always needed
     global Variable;

     % Here ya go
     y = Variable;

end
Run Code Online (Sandbox Code Playgroud)

MUCH更好的替代方法是使用

function x = getvariable(x)
     % no body needed    
end
Run Code Online (Sandbox Code Playgroud)

你称之为

>> y = getvariable(Variable);
Run Code Online (Sandbox Code Playgroud)

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

>> y = Variable;
Run Code Online (Sandbox Code Playgroud)

)

尽管全局变量存在一些合理的用例,但一般来说它们会使代码陷入困境并使其更容易出错并且难以调试.阅读有关该主题的内容.

  • @Moz:...只是将矩阵变量作为参数传递给函数? (3认同)
  • 为什么不使用函数来读取你的excel文件(`xlsread`,或类似的)并从那里开始? (3认同)

S P*_*S P 5

正如@rody建议的那样,将函数中的矩阵和x传递给它

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

就像你想要访问Variable矩阵的第10个元素一样,所以使函数成为

function y= getvariable(matrixname,no)
y=matrixname(no)
end
Run Code Online (Sandbox Code Playgroud)

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

Y =的getVariable(可变,3)

你会得到第3个元素