使用动态命名分配变量

时间:2014-03-05 17:33:33

标签: matlab dynamic struct naming-conventions

我正在创建一个带有两个输入的函数,并且想知道如何将输出命名为输入的名称。

E.g。

function  [padded_*input_name*] = padstruct(S, F)

稍后在代码中......

 else
    padded_*input_name* = padarray(toPad, (longest - size(toPad,1)), NaN('double'), 'post');

因此,如果我输入一个名为S的结构(在输入参数中标记为my_struct),我希望得到一个名为padded_my_struct的输出。但是这应该可以根据输入结构的名称自由更改。我想这样做,因为我有很多结构来运行这个函数,我想从输出名称明确地知道,哪个是。

我是Matlab的初学者,所以非常感谢任何摘要或文学参考。

2 个答案:

答案 0 :(得分:1)

我不太给你你想要的东西。相反,我有一个函数,给定输入Account和F,在基础工作区中生成一个变量“padded_Account”,并返回它创建的变量的名称。

function padded_Sname_str=padstruct(Sin,F)

%get the name of the structure used in the function call here
Sname=inputname(1);

%do stuff to Sin here
Sin.pad=F;  %this is just my test operation

%create the name of the new variable you want
padded_Sname_str=['padded_',Sname];

%this creates it in the base workspace, since passing back as an
%output argument doesn't preserve the name
assignin('base',padded_Sname_str,Sin)

return

希望这有帮助。干杯!

答案 1 :(得分:1)

试试这个 -

function  [padded_*input_name*] = padstruct(S, F)

%// .. later on in code
else
    value = padarray(toPad, (longest - size(toPad,1)), NaN('double'), 'post');
    evalc(['padded_' inputname(1) '= value']);

告诉我们它是否适合您!