我是MATLAB的初學者,我希望能在這裏找到一些幫助。我在一個大矩陣中共有80個人的模型預測結果。我需要從大矩陣中提取每個人的數據,將它們分配到一個新的變量/矩陣中,進行一些額外的計算,然後根據需要繪製某些信息。提取一個大矩陣的部分,並將它們分配給具有循環功能的新變量
要做到這一點,我試圖用循環函數編寫腳本,但是複雜或者更準確:以原始方式!
簡化的例子: 我的矩陣稱爲:All_Indi_Data ....其尺寸爲:600行×21列
%Column 1: grouping variable (e.g., code or ID with values 1,2,3,4,5, etc.);
%Column 2: independent var.;
%Column 3: t;
%Column 4: OBS;
%Column 5: PRED;
i= length (All_Indi_Data);
%% First Indi.
q=1; % indicating the ID of the indi for which I want to extract the data
j=1; % variable added to insure writing start from the first row
for r=1:i
if All_Indi_Data (r,1)==q
Indi_1 (j,1:21) = All_Indi_Data (r,1:21)
j=j+1
end
end
%% Second Indi.
q=q+1
j=1
for r=1:i
if All_Indi_Data (r,1)==q
Indi_2 (j,1:21) = All_Indi_Data (r,1:21)
j=j+1
end
end
.
.
.
1)第一個問題是:我可以分配在新的變量,這些數據( Indi_1,Indi_2等)以更簡單的方式使用或不使用循環功能?我會很感激你的幫助。
2)是否有任何代碼或任何方式從前面提到的大矩陣中繪製這些選定部分(根據分組變量,例如Indi_1的數據),而不會浪費大量時間和空間(重新複製核心部分的代碼一遍又一遍)爲腳本,並使用循環功能?!換句話說,我想檢測 - 用循環函數&分組變量 - 哪些值是感興趣的,然後繪製它們(例如,列第3列的數據與列4的數據爲每個人,從第一個開始到最後一個)?
我希望我描述清楚我的問題,並希望能聽到來自專家的傢伙:)什麼......
非常感謝提前..
哦......非常感謝..對於明確的答案,但對於非常快速的答覆...我會嘗試它(我得到一個紅色的第一個複製過去: p),然後我將更新我的答案,,, –
更新.... 我收到此錯誤消息: 使用horzcat的錯誤 串聯的矩陣的大小不一致。 Test_Script(line 6)中的錯誤 eval(['Indi_'num2str(idx)'= ALL_Indi_Data('num2str(pos)',1:21);']); 任何線索>>? 我必須提到,對於一個人可能有6或7個信息原料......等等。 再次提前致謝 –
這可能是因爲它在多行中查找ID。如果你想要第一個匹配的行,你應該用num2str(pos(1))改變num2str(pos)。如果你想要他們所有......你想如何拯救他們?用哪個變量名? – Digna