案例 1: 这将为您提供 eval 字符串,您可以稍后使用这些字符串从一些名为 @ 的变量中实际获取 var1、var2、var3 等的值分别为 987654324@、some_string_2、some_string_3。
function varargout = myFunc1(n)
for ii=1:n
eval_string = strcat('var',num2str(ii),'=','some_string_',num2str(ii));
varargout(ii) = {eval_string};
end
return;
示例运行:
另一种解决方案可能是在单元格数组中获取字符串 -
function eval_strings_cell = myFunc1_1(n)
for ii=1:n
eval_strings_cell(ii) = {strcat('var',num2str(ii),'=','some_string_',num2str(ii))};
end
return;
示例运行:
案例 2: 如果您希望评估 var1、var2、var3 等的值,您需要通过函数,因为函数不能只从工作区中挑选变量。
所以,对于这种情况,你可以使用这个 -
function varargout = myFunc2(n,some_string_1,some_string_2,some_string_3)
for ii=1:n
eval_string = strcat('varargout(',num2str(ii),')=','{some_string_',num2str(ii),'}');
evalc(eval_string);
end
return;
示例运行:
-
仅从前两个输入中选择值 -
[v1,v2] = myFunc2(2,10,12,13)
v1 =
10
v2 =
12
-
从所有三个输入中选择值 -
[v1,v2,v3] = myFunc2(3,10,12,13)
v1 =
10
v2 =
12
v3 =
13
案例 3:如果您正在寻找类似上述案例的内容,则不需要 eval。您可以直接将值放入varargout,如下所示 -
function varargout = myFunc3(n,varargin)
for ii=1:n
varargout(ii) = varargin(ii);
end
return;
示例运行:
-
三个输入,两个输出 -
[v1,v2] = myFunc3(2,10,12,13)
v1 =
10
v2 =
12
-
三个输入,三个输出
[v1,v2,v3] = myFunc3(3,10,12,13)
v1 =
10
v2 =
12
v3 =
13