2013-02-27 50 views
0

我正在使用Matlab中有五列和幾百萬行的矩陣。我有興趣挑選這些數據的特定組。目前我正在使用plot3()和畫筆/選擇數據工具進行此操作。使用Matlab畫筆保存矩陣列/選擇數據工具

我將矩陣的前三列作爲X,Y,Z,並突出顯示我感興趣的矩陣區域。然後使用畫筆/選擇工具的「創建變量」工具將該區域導出爲新的矩陣。

問題是,當我這樣做時,原始的更大矩陣的剩餘兩列被丟棄。我明白爲什麼 - 他們沒有被繪製,因此圖形工具不知道他們。我需要該分區域的所有五列以繼續處理管道。

我使用可怕的嵌套if循環方法嚮導出的矩陣添加適當的第4列和第5列值 - 如果第1,2和3列在原始矩陣和導出矩陣中都匹配,請將第4列原始矩陣到出口的矩陣。這是不好的設計和令人痛苦的慢。我知道必須有一個Matlab函數/技巧 - 任何人都可以幫忙嗎?

謝謝!

這可能幫助:

1. I start with matrix 1 with columns X,Y,Z,A,B 
2. Using the brush/select tool, I create a new (subregion) matrix 2 with columns X,Y,Z 
3. I then loop through all members of matrix 2 against all members of matrix 1. If X,Y,Z match for a pair of rows, I append A and B 
from that row in matrix 1 to the appropriate row in matrix 2. 
4. I become very sad as this takes forever and shows my ignorance of Matlab. 

回答

0

如果我理解正確的話在這裏你的情況是一個簡單的方法來做到這一點:

假設你有一個矩陣,像這樣:M = [A B C D E]其中每個字母是NX1向量。

您選擇一個範圍,這部分是不是真的我清楚,但假設你可以創建以下文件:

idxAidxBidxC,是1,如果他們是在該地區,否則爲0。

然後,你可以簡單地使用:

M(idxA&idxB&idxC,:)

,你會得到額外的兩列也是如此。