我目前正在开发一个包含两个对象的数据分析程序:Experiment
和RunSummary
。 Experiment
对象包含RunSummary
对象的多个实例。每个RunSummary
对象包含多个属性(行矩阵),每个属性包含给定运行的不同数据点。
例如:Experiment.RunSummary(5).Tmean
是行矩阵,包含我实验中第5次运行的所有平均扭矩值。
我目前正在尝试找到一种方法,将特定运行中的选定公共属性组合成可用于进一步分析的单个矩阵。我不得不这样做的当前方式是:
X(:,1) = [Drilling.Runs(1).Tmean,...
Drilling.Runs(2).Tmean,...
Drilling.Runs(3).Tmean,...
Drilling.Runs(5).Tmean]';
X(:,2) = [Drilling.Runs(1).Fmean,...
Drilling.Runs(2).Fmean,...
Drilling.Runs(3).Fmean,...
Drilling.Runs(5).Fmean]';
此代码从运行1,2,3和5获取平均扭矩(Tmean)和平均力(Fmean),并将它们组合在单个矩阵X中,与Tmean组合用于第一列中的所有运行和Fmean in第二。虽然这种方法有效,但我有超过20种不同的属性和15种不同的运行,这使得这种编码非常繁琐。
我尝试使用get(Experiment.RunSummary(i),'Tmean')
等代码尝试检索这些属性matricies,但遇到了错误:
无法从RunSummary转换为double。
谢谢, 地铁
编辑:Drilling是Experiment对象的名称。运行是RunSummary对象的名称。
答案 0 :(得分:3)
您可以使用dynamic fields。该文档适用于结构,但相同的主要适用于类(至少在我的R2012a安装上)。 您还可以使用对象数组索引的逗号分隔性质来压缩代码。 例如:
I = [1,2,3,5] ;
props = {'Tmean','Fmean'} ;
Nprops = length(props) ;
X = zeros(length(I),Nprops);
for k = 1:Nprops
X(:,k) = [Drilling.Runs(I).(props{k})]';
end