在matlab中用循环中的两个输出更改函数的变量

时间:2014-04-07 07:26:53

标签: matlab for-loop

我有一个函数,它给了我两个输出,我需要在for循环中使用它来创建不同的变量,我想在以后的循环中使用它们。所以我需要在创建它们的for循环期间更改它们的名称。 像这样的东西:

for l=1:L
    [A(l),B(l)] = function(l);
end

我怎么能这样做,所以我可以有A1,A2,...或B1,B2,.... 感谢

2 个答案:

答案 0 :(得分:0)

如果您不希望use cell arrays,可以将structure与动态字段名称结合使用:

for l = 1:L
    afn = sprintf('A%d', l ); % field name for first output
    bfn = sprintf('B%d', l ); % field name for second output
    [s.(afn) a.(bfn)] = func( l );
end

fieldnames( s ); % see all created variable names

答案 1 :(得分:-1)

以下是您可以根据需要进行修改的示例。

function main // because we need to call `func`

L = 5; // max num of iterations

for l = 1:L

    // replace `func` with the name of your function
    eval(['[A' num2str(l) ', B' num2str(l) '] = func(' num2str(l) ')'])

end

end

// your function goes here
function [s, c] = func(x)

s = x*x;
c = s*x;

end