Импорт числовых векторов и строк в матрицу MATLAB - PullRequest
1 голос
/ 24 декабря 2011

У меня есть следующая структура данных (хранится как 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]  

... и т. Д.

Я хочу пройтись по предметам и условиям для корреляции векторов значений между pic1 и pic2.

В python я бы организовал их как список словарей, но я не уверен, что аналогичная / оптимальная структура есть в MATLAB. Каков наилучший способ импорта и организации этих данных в MATLAB?

1 Ответ

2 голосов
/ 24 декабря 2011

Например, вы можете сделать что-то подобное:

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:

Есть также много других возможностей в зависимости от того, что вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...