将变量传递出局部函数

时间:2014-03-18 13:51:57

标签: matlab

我在代码中遇到了本地功能方面的问题,所以我在下面贴了一个简单的例子:

function [avg,testvar] = test(x)     %Warning
n = length(x);
avg = mymean(x,n);
end

function [a,testvar] = mymean(v,n)
a = sum(v)/n;
testvar=123;
end

人们可能会看到我正在尝试的东西;将testvar传递出本地函数。但Matlab会返回警告:

"The function return value 'testvar' might be unset"

关于我已注释的行"%警告"。

解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

您需要指定test()的第二个输出的值。否则,MATLAB如何知道它的值应该是什么?它不知道mymean()的第二个输出应该被路由到test()的第二个输出。也许这会解决你的问题。

function [avg,testvar] = test(x)     %Warning
  n = length(x);
  [avg, testvar] = mymean(x,n);
end

function [a,testvar] = mymean(v,n)
  a = sum(v)/n;
  testvar=123;
end

答案 1 :(得分:0)

function之后的括号之间的变量是输出变量。

在您的第一个函数中,您没有为testvar分配任何值,因此警告。如果在第一个函数中添加testvar = 123;,警告就会消失。或者您可以从输出变量中删除testvar,并保留:

function avg = test(x)