动态更改变量名称

时间:2016-05-05 21:12:16

标签: matlab loops

我有一个循环可以计算多个条件的平均值(/OAuthCallback),标准偏差(m)和标准误差(std)。因为每个条件都有自己的semmstd,我想相应地命名我的输出(它们应该是双重格式)。例如:semcond1_mcond1_stdcond1_semcond2_mcond2_std等。

这就是我的尝试:

cond2_sem

注意: cond={'cond1','cond2','cond3','cond4','cond5',...} for a=1:length(cond) [strcat(cond{a},'_m'),strcat(cond{a},'_std'),strcat(cond{a},'_sem')]=compute_stats(M(:,a)); end 是输出compute_statsmstd的函数。 sem是包含我的数据的矩阵。问题是M似乎不能作为更改输出名称的方法。例如,对于迭代1,我的输出是一个名为strcat的矩阵,而不是给我strcat

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

考虑使用非常适合您的目的的结构。顺便说一句,不要使用cond作为变量名。有一个名为cond的函数可以计算矩阵的条件数。在这种情况下使用cond会使这个功能蒙上阴影。您可以按原样保留cond1cond2等字段:

con={'cond1','cond2','cond3','cond4','cond5',...};
result = struct();
for a=1:numel(con)
    [m, stdd, sem] = compute_stats(M(:,a));
    result.([con{a} '_m']) = m;
    result.([con{a} '_std']) = stdd;
    result.([con{a} '_sem']) = sem;
end

result包含您想要的编译结果。然后,您将使用正确的字符串名称访问正确的矩阵。例如,如果您想要第一个条件的std输出,请执行:

out = result.cond1_std;