2016-03-01 81 views
0

Im做的乘法数据集的一些统计分析,但它似乎很愚蠢硬编码的一切,所以我想知道如果有可能使一个循环的数据集,代码我已经是这样的:循环的数据集MATLAB

dsA = dataset('XLSFile','RING 29 deg.xlsx','Sheet',7); 
dsB = dataset('XLSFile','RING 29 deg.xlsx','Sheet',8); 
dsC = dataset('XLSFile','RING 29 deg.xlsx','Sheet',9); 
dsD = dataset('XLSFile','RING 29 deg.xlsx','Sheet',10); 
dsE = dataset('XLSFile','RING 29 deg.xlsx','Sheet',11); 
dsX = dataset('XLSFile','RING 29 deg.xlsx','Sheet',12); 
dsY = dataset('XLSFile','RING 29 deg.xlsx','Sheet',13); 

%Testing differences in median after 0,5 sex for A 
[p,t,stats_A_1] = kruskalwallis(dsA.x0_5Sec,dsA.Code_1); 
title('Differences in median after 0,5 sec for Concentration A') 
print(gcf, '-dpdf', 'A_0,5_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_1); 
title('Differences in median after 0,5 sec for Concentration A') 
[nms num2cell(m)] 


%Testing differences in median after 1 sex for A 
[p,t,stats_A_2] = kruskalwallis(dsA.x1Sec,dsA.Code_1); 
title('Differences in median after 1 sec for Concentration A') 
print(gcf, '-dpdf', '73_1_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_2); 
title('Differences in median after 1 sec for Concentration A') 
[nms num2cell(m)] 


%Testing differences in median after 1,5 sex for A 
[p,t,stats_A_3] = kruskalwallis(dsA.x1_5Sec,dsA.Code_1); 
title('Differences in median after 1,5 sec for Concentration A') 
print(gcf, '-dpdf', '73_1,5_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_3); 
title('Differences in median after 1,5 sec for Concentration A') 
[nms num2cell(m)] 


%Testing differences in median after 2 sex for A 
[p,t,stats_A_4] = kruskalwallis(dsA.x2Sec,dsA.Code_1); 
title('Differences in median after 2 sec for Concentration A') 
print(gcf, '-dpdf', 'A_2_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_4); 
title('Differences in median after 2 sec for Concentration A') 
[nms num2cell(m)] 


%Testing differences in median after 2,5 sex for A 
[p,t,stats_A_5] = kruskalwallis(dsA.x2_5Sec,dsA.Code_1); 
title('Differences in median after 2,5 sec for Concentration A') 
print(gcf, '-dpdf', 'A_2,5_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_5); 
title('Differences in median after 2,5 sec for Concentration A') 
[nms num2cell(m)] 


%Testing differences in median after 3 sex for A 
[p,t,stats_A_6] = kruskalwallis(dA.x3Sec,dA.Code_1); 
title('Differences in median after 3 sec for Concentration A') 
print(gcf, '-dpdf', 'A_3_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_6); 
title('Differences in median after 3 sec for Concentration A') 

我需要做到这一点,数据集A到Y,硬编码,只是似乎愚蠢...但我已经尝试做一个循环,就像我在做图像处理但我不能让它工作,当我尝试与数据集,有没有人有如何做到这一点的想法? 祝您有美好的一天

回答

1

由于您使用的变量名称如stats_A_3dsA的索引编码为其变量名,因此难以编写循环。要开发循环版本,您必须重构代码并删除这些硬编码索引。从下面的两个“迭代”开始,修改代码以使迭代之间的所有内容都取决于变量index。当你修改代码时,你完成了两个块都相同但仍然与之前一样的方式。

%first iteration 
index=1 
t=index/2 
dsA = dataset('XLSFile','RING 29 deg.xlsx','Sheet',7); 
%Testing differences in median after 0,5 sex for A 
[p,t,stats_A_1] = kruskalwallis(dsA.x0_5Sec,dsA.Code_1); 
title('Differences in median after 0,5 sec for Concentration A') 
print(gcf, '-dpdf', 'A_0,5_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_1); 
title('Differences in median after 0,5 sec for Concentration A') 
[nms num2cell(m)] 
%second iteration 
index=2 
t=index/2 
dsB = dataset('XLSFile','RING 29 deg.xlsx','Sheet',8); 
%Testing differences in median after 1 sex for A 
[p,t,stats_A_2] = kruskalwallis(dsA.x1Sec,dsA.Code_1); 
title('Differences in median after 1 sec for Concentration A') 
print(gcf, '-dpdf', '73_1_sec.pdf'); 
figure; 
[c,m,h,nms] = multcompare(stats_A_2); 
title('Differences in median after 1 sec for Concentration A') 
[nms num2cell(m)] 

你将需要实现它(查看文档,如果你不认识他们)一些工具:

  • 单元阵列,它取代了stats_A_1stats_A_6矩阵
  • sprintf产生您的文件名
  • dynamic field names
+1

我同意结构更简单,如ds(1).data加ds(1).stats,并对每个数据集进行迭代。 –

+0

@ R.Bergamote:你说得对,统计数据中'struct'是更好的选择。我没有阅读“kruskalwallis”的文档,只是选择了一个存储任何内容的“单元”。 – Daniel