我有以下数据结构(存储为CSV):
Sub Cond Pic Vals
s101 A pic1 [1,3,5,1,-2,5]
s101 A pic2 [1,-2,5,0,2,1]
s101 B pic1 [2,4,7,0,1,-3]
s101 B pic2 [3,-1,1,1,6,1]
s102 A pic1 [1,7,7,3,-1,5]
s102 A pic2 [2,8,7,0,3,-4]
...etc
我想通过遍历主题和条件来关联pic1和pic2之间的值向量。
在python中,我会将它们组织为一个字典列表,但我不确定MATLAB中的类似/最佳结构是什么。在MATLAB中导入和组织这些数据的最佳方式是什么?
发布于 2011-12-24 06:03:39
例如,您可以这样做:
xp.txt:
Sub Cond Pic Vals
s101 A pic1 [1,3,5,1,-2,5]
s101 A pic2 [1,-2,5,0,2,1]
s101 B pic1 [2,4,7,0,1,-3]
s101 B pic2 [3,-1,1,1,6,1]
s102 A pic1 [1,7,7,3,-1,5]
s102 A pic2 [2,8,7,0,3,-4]
matlab脚本:
nValue=6; %%%%% or 90
vals=cell(1,nValue);
[sub cond pic vals{:}]=textread('xp.txt',['%s %s %s [%f' repmat(',%f',1,nValue-1) ']'],'headerlines',1)
vals=horzcat(vals{:})
for s = unique(sub)'
for c = unique(cond)'
index=(strcmp(sub,s{1})&strcmp(cond,c{1}));
display(['sub: ' s{1} '; cond: ' c{1} ])
resu1=vals(index & strcmp(pic,'pic1'),:)
resu2=vals(index & strcmp(pic,'pic2'),:)
%%%% computation of the correlation
end
end
结果:
sub: s101; cond: A
resu1 =
1 3 5 1 -2 5
resu2 =
1 -2 5 0 2 1
sub: s101; cond: B
resu1 =
2 4 7 0 1 -3
resu2 =
3 -1 1 1 6 1
sub: s102; cond: A
resu1 =
1 7 7 3 -1 5
resu2 =
2 8 7 0 3 -4
sub: s102; cond: B
resu1 =
Empty matrix: 0-by-6
resu2 =
Empty matrix: 0-by-6
PS:
还有许多其他的可能性取决于你想要什么
https://stackoverflow.com/questions/8620582
复制相似问题