2012-09-25 42 views
0

我是Matlab的新手,仍然試圖學習語法和一切。我有一個大數據矩陣DI我試圖刪除大矩陣的一部分,並做出小矩陣。我正在搜索3列並返回包含矩陣3列中的數字。有人可以幫我在matlab中做這個循環嗎?

BPI20 = D(D(:,1) == 0 &D(:,2)==0 &D(:,6)==20,:); 
BPI21 = D(D(:,1) == 0 &D(:,2)==0 &D(:,6)==21,:); 
BPI22 = D(D(:,1) == 0 &D(:,2)==0 &D(:,6)==22,:); 
BPI23 = D(D(:,1) == 0 &D(:,2)==0 &D(:,6)==23,:); 
BPI24 = D(D(:,1) == 0 &D(:,2)==0 &D(:,6)==24,:); 

我想寫一個for循環上面的代碼,其中變量BPI的價值也應該增加 謝謝

+0

什麼D(:,6'看起來像?1:24'? –

+0

D(:,6)= 1:24.對於一定數量的行和增量1 – Anand

+0

是什麼?如果D(18,1)〜= 0或D(18,2)〜= 0',則在'BPI18'或'BPI {18}'中?零點?NaNs?空?你想怎麼處理它?因爲你可能只是簡化上面所有的代碼:'BPI = D(D(:,1)== 0&D(:,2)== 0)' –

回答

1

不要爲BPI與增量使用這樣一個名稱(即名稱這個名字本身),使用cell array代替:

col1is0 = D(:,1)==0; 
col2is0 = D(:,2)==0; 

maxBPI = 24; 
BPI = cell(maxBPI,1); 
for ii=1:maxBPI 
    BPI{ii} = D(col1is0 & col2is0 & D(:,6)==ii, :); 
end 

也看到this post

+0

但是我必須再次將單元格轉換爲矩陣嗎?因爲D是一個矩陣。 – Anand

+0

如何訪問單元陣列?我需要對最終的BPI進行操作,因此我必須將其轉換爲矩陣。我需要繪製來自BPI的數據。 – Anand

+0

我以前的評論是錯誤的,或者至少不會總是工作。點擊我的帖子中的鏈接以瞭解如何使用單元格數組,您可以通過使用「BPI {2}」來查看單元格中的內容。 –

相關問題