我有一个2x2的设计研究,我有超过150名参与者。所以我有4个不同的条件,我将它们命名为11,12,21,22。
我需要使用cell2mat将所有单元格值转换为矩阵,并且需要为每个参与者执行此操作。我正在尝试编写一个for循环,使每个参与者具有不同的值,但我不知道如何做到这一点。
%% each participant records
%conditions are = 11 , 12 , 21, 22
%participants 1:101 (p1,p2,p3.....p150)
for i = 1:150
%personal control (pc)
p_pc11= cell2mat(A.pc11(i,:));
p_pc12= cell2mat(A.pc12(i,:));
p_pc21= cell2mat(A.pc21(i,:));
p_pc22= cell2mat(A.pc22(i,:));
save('p?_pc11' , p1_pc11)
end应该是这样的,但是我不知道如何以不同的方式保存每个变量。我尝试过p(i)_pc11 , p'i'_pc11,但它给出了错误。我需要为每个参与者提供一个唯一的变量。我将它们保存在structs中,但它不适合运行anova或manova。
所以我的问题是,我如何用不同的名字保存每个参与者的值?
发布于 2018-01-26 06:28:24
for ii = 1:150
%personal control (pc)
p_pc11= cell2mat(A.pc11(ii,:));
p_pc12= cell2mat(A.pc12(ii,:));
p_pc21= cell2mat(A.pc21(ii,:));
p_pc22= cell2mat(A.pc22(ii,:));
% Generate numbered filenames
filename11 = sprintf('p_pc11_%d',ii);
filename12 = sprintf('p_pc12_%d',ii);
filename21 = sprintf('p_pc21_%d',ii);
filename22 = sprintf('p_pc22_%d',ii);
% Save them with the numbered name
save(filename11 , p_pc11)
save(filename12 , p_pc12)
save(filename21 , p_pc21)
save(filename22 , p_pc22)
end使用sprintf生成编号的文件名,然后保存这些文件名。请注意,我将循环索引从i更改为ii,名称为i is the imaginary unit。
请注意,在MATLAB中使用编号变量名,或者任何类型的动态命名变量,对于性能和可读性都是非常非常糟糕的,因此会出现调试问题,有关更深入的解释,请参阅this answer of mine和其中包含的对MathWorks源代码的引用。
https://stackoverflow.com/questions/48452753
复制相似问题