我有4个数据矩阵50x35双(Diff_CT, Diff_Imp, Diff_F1, Diff_F2)
我要对每个矩阵执行严格相同的计算,突然,我想要创建一个for循环,其中矩阵的部分名称是输入参数。
一个我试过但没有成功的例子
parameters = {'CT', 'Imp', 'F1', 'F2'};
for i_parameters = 1: numel(parameters)
my_parameters = parameters{i_parameters};
['Diff_',(my_parameters),'_T0'] = ['Diff_',(my_parameters)](:,1) ['Diff_',(my_parameters)](:,8) ['Diff_',(my_parameters)](:,15) ['Diff_',(my_parameters)](:,22) ['Diff_',(my_parameters)](:,29)];
['DiffMean',(my_parameters),'0'] = mean(mean(['Diff_',(my_parameters),'_T0'));
['Diffstd',(my_parameters),'0'] = std(std(['Diff_',(my_parameters),'_T0'));
end
发布于 2018-06-17 19:44:33
从来没有很好的理由来创建动态变量名。他们制造的问题之一就是你所经历的。使用structs/ cell数组/ ND数组;以适合这种情况的内容为准。在您的例子中,struct似乎更合适,如下所示:
%Converting your data matrices into a struct
Diff_ = struct('CT',Diff_CT, 'Imp',Diff_Imp, 'F1',Diff_F1, 'F2', Diff_F2);
for i_parameters = 1 : numel(parameters)
my_parameters = parameters{i_parameters};
%Creating structures with your variables as their fields
Diff_.([my_parameters '_T0']) = [Diff_.(my_parameters)(:,1) ...
Diff_.(my_parameters)(:,8) Diff_.(my_parameters)(:,15) ...
Diff_.(my_parameters)(:,22) Diff_.(my_parameters)(:,29)];
DiffMean.([my_parameters '0']) = mean(mean(Diff_T0.(my_parameters)));
Diffstd.([my_parameters '0']) = std(std(Diff_T0.(my_parameters)));
end
您期望拥有的变量Diff_CT_T0
、DiffMeanCT0
和DiffstdCT0
现在可以分别以Diff_.CT_T0
、DiffMean.CT0
和Diffstd.CT0
等形式访问。
https://stackoverflow.com/questions/50899050
复制相似问题