可以使用函数inputname
来检索对当前正在执行的函数的调用中传递的工作空间变量名称。但是,是否有任何等效函数来获取在对当前正在执行的函数的调用中指定的输出参数的名称?
想象一下,我有以下功能:
function [a,b,c] = test(x)
disp([ouputname(1),ouputname(2),ouputname(3)])
end
运行此功能时:
[my,name,is] = test(x)
预期结果应为:
mynameis
答案 0 :(得分:1)
简单: 没有没有。
复杂:Matlab代码是"编译"在运行时,并且无法在返回[my,name,is]
的结果之前知道test(x)
。
解决方法:如果要确保函数中使用的字符串等于返回到工作区的变量,可以使用assignin
执行以下操作:
function test(x, varnames)
a = 1;
outputname{1} = varnames{1};
assigin('base', outputname{1}, a)
...
c = 3;
outputname{3} = varnames{3};
assigin('base', outputname{3}, c)
disp([outputname{:}])
end
并将您的功能称为:
text(x,{'my','name','is'})
然后你的工作区中会有这些变量以及你的函数输出:
" mynameis"