使用功能"谁"在MATLAB中的一个函数内

时间:2014-05-21 17:34:02

标签: matlab

我正在使用 Matlab R2013a ,我正在尝试使用' who'函数内的函数,用于检索以名称开头的变量列表。

假设我的工作区中有一个变量列表,如下所示:

  • a = 1
  • a_2 = 2
  • a_3 = 3

当我运行时:

who('a*');

它工作正常。

但是当我在这样的函数中运行相同的东西时:

function someFunction()

   who('a*');

end

function someFunction()

   disp(who('a*'));

end

它没有。没有错误,只是没有输出。

如果我将这些变量保存在名为

的Matlab文件中
  

myVariables.mat

并在同一个函数中运行它:

function someFunction()

   who('a*','myVariables');

end

它仍然无法运作。

我可以理解为什么第一个可能因为范围而无效,但是指定文件来运行' who'功能应该工作......我错过了什么?

任何帮助都将不胜感激。


此致

Diaa

2 个答案:

答案 0 :(得分:1)

作为mentioned by @Daniel,函数的工作空间与基础工作空间分开。有两种方法可以在m文件中使用who来检查基础工作区:

  1. 使用script而不是函数(即省略function - 行;按照文件名启动脚本,就像使用函数一样):脚本共享基本工作空间因此,who将能够看到您的所有变量。

  2. 使用evalinevalin('base','who')

答案 1 :(得分:0)

您正在尝试访问函数中的变量。只有输入参数和全局变量在函数中可见。你必须做类似的事情:

function someFunction(a1,a2)

   who('a*');

end

如果您真的尝试使用动态变量名称,我强烈建议您更改设计。