我有4个数据矩阵50x35 double (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
答案 0 :(得分:1)
创建动态变量名称从来没有充分的理由。他们创造的问题之一就是您正在经历的问题。使用结构/单元阵列/ 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
和{{1}来访问分别等等。