我有一个循环计算多个条件的mean(m),标准偏差(std)和标准误差(sem).由于每个条件都有自己的m,std和sem,我想相应地命名我的输出(它们应该是双格式).例如:cond1_m,cond1_std,cond1_sem,cond2_m,cond2_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
Run Code Online (Sandbox Code Playgroud)
注意:compute_stats是输出功能m,std以及sem.M是包含我的数据的矩阵.问题是,这strcat似乎不是一种改变输出名称的方法.例如,对于迭代1,cond1_m我的输出不是给我,而是一个名为strcat的矩阵.
有人可以帮忙吗?
考虑使用非常适合您的目的的结构.顺便说一句,不要cond用作变量名.有一个函数被调用cond来计算矩阵的条件数.cond在这种情况下使用会掩盖这个功能.你可以离开了cond1,cond2等字段会是这样的:
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
Run Code Online (Sandbox Code Playgroud)
result包含您想要的编译结果.然后,您将使用正确的字符串名称访问正确的矩阵.例如,如果您想要std输出第一个条件,请执行以下操作:
out = result.cond1_std;
Run Code Online (Sandbox Code Playgroud)