2013-03-15 76 views
0

我正在分析行爲實驗中的數據。我正在將我的數據從一個 excel文件轉換爲matlab。matlab:製作腳本來分析excel文件中的數據

% load data 
[num,text,raw] = xlsread('stop'); 
data=num(:,10); % column 10 in original excel file 

稱爲data該變量是包含來自所有受試者的結果的一列矢量(25000x1)。

data(1:227) is from subject 1. 
data(228:420) is from subject 2, and so on. 

見我的數據以下部分:

Subject ID Data 
10011   384 
10011   290 
10011   508 
10033   322 
10033   361 
10033   522 

我需要那個叫"data"輸出。這些變量("data")應包含每個主題的所有數據。

截至目前,我每次手動創建主題一個變量 - 這是不實際(100例):

x1=find(num(:,1)==10011); 
px1=data(x1,:); and so on up to 100th subject. 

因爲我已經試過下面這將是更好,如果這個過程可以自動化:

subjects=[10011; 10033...]; 
for i=1:length(subjects) 
data=num((find(num(:,1)==subjects(i))),10); 
end 

如果我用與data(i)交換,我會收到一條錯誤消息。 我該怎麼辦?

幫助將不勝感激。

+0

我不知道你想做什麼。你只對Excel表格第10欄感興趣嗎?每個科目的數據是否包含277個數字?什麼是錯誤信息? – Molly 2013-03-15 19:28:04

+0

每個主題在第1列中都有一個主題標識,其行數與第10列中的響應數相同。我使用了xlsread,以便在名爲data的matlab變量中包含excel表單的編號。我想從第10欄中分別提取每個主題的回答。 對象數據集中的響應數量不是恆定的。在200-250之間變化。 錯誤信息:???在賦值A(I)= B中,B中的元素 的數量和 我必須是相同的。 我不確定爲什麼我收到此錯誤消息。由於每個主題的回覆數量不同,我必須使用結構? – marius1111 2013-03-15 19:42:00

回答

0

如下你可以這樣做:

subjects=unique(num(:,1)); %note that 'subjects' will be sorted. 
data=[]; 
for i=1:length(subjects) 
    temp1=num((find(num(:,1)==subjects(i))),10); 
    %now two options, either save the data for each subject in a different cell, as follows: 
    data{i}=temp1; %if you do this, you can replace temp with data{i}. Also remove the line: data=[]; 
    %or save it in a matrix but then you cannot differentiate between data of different subjects. For that, you have to write another code. 
    data=[data;temp]; %this is where you need temp 
end