首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中保存动态命名的变量

在for循环中保存动态命名的变量
EN

Stack Overflow用户
提问于 2018-01-26 06:13:52
回答 1查看 55关注 0票数 1

我有一个2x2的设计研究,我有超过150名参与者。所以我有4个不同的条件,我将它们命名为11122122

我需要使用cell2mat将所有单元格值转换为矩阵,并且需要为每个参与者执行此操作。我正在尝试编写一个for循环,使每个参与者具有不同的值,但我不知道如何做到这一点。

代码语言:javascript
复制
 %% 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。

所以我的问题是,我如何用不同的名字保存每个参与者的值?

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 06:28:24

代码语言:javascript
复制
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源代码的引用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48452753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档