私はMatlabで5列と数百万行の行列を扱っています。このデータの特定のグループを選択することに興味があります。現在、plot3() とブラシ/選択データ ツールを使用してこれを行っています。
マトリックスの最初の 3 列を X、Y、Z としてプロットし、関心のあるマトリックス領域を強調表示します。次に、ブラシ/選択ツールの [変数の作成] ツールを使用して、その領域を新しいマトリックスとしてエクスポートします。
問題は、それを行うと、元のより大きな行列の残りの 2 つの列が削除されることです。理由はわかります-それらはプロットされていないため、図ツールはそれらについて認識していません。ただし、処理パイプラインを続行するには、そのサブリージョンの 5 つの列すべてが必要です。
恐ろしいネストされた if ループ アプローチを使用して、適切な 4 番目と 5 番目の列の値をエクスポートされたマトリックスに追加しています。元のマトリックスとエクスポートされたマトリックスの両方で列 1、2、3 が一致する場合は、元のマトリックスの列 4/5 を1つをエクスポートしました。設計が悪く、ひどく遅いです。これには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.