2016-12-11 7 views
0

行列T(60000 * 1)があります。この行列の各行には0から9の番号が1つあります。matlabの別の行列からブール値行列を生成する

T行列から別の行列Y(60000 * 10)を作成したいとします。 Y 3の値を有し、次に行列Yのマトリクスの行2は

ようでなければならない行2のブールmatrix.if行列T [0 0 1 0 0 0 0 0 0 0]

これは私のコードであります Mnistは私のデータセット

T=MnistTrainY; 
Z = ones(length(T), 1) * [0 1 2 3 4 5 6 7 8 9]; 
Y = (Z == T); 

これは本当に細かい作品ですが、私はより良いパフォーマンスとより効率的であるどのような方法があるかを知りたいですか?

答えて

2

を使用して、希望のlogicalマトリックスを作成することができます。これにより、要素のすべての組み合わせの間で、Tと配列0:9の等価(eq)の要素ごとのチェックが実行されます。あなたはMATLABバージョンR2016bにしているか、それが自動的に寸法放送を行いますので、後で、あなたがbsxfunを削除することができた場合は

Y = bsxfun(@eq, T, 0:9); 

Y = T == 0:9; 
+0

私はあなたにこのことを尋ねます - > @eq? – mkafiyan

+0

@mkafiyan '=='と同じ 'eq'への関数ハンドルです – Suever

+0

ahaはい私は' Y = T == 0:9; 'を使うことができるので、私はmatlabのR2016b版を使います。ありがとう:D – mkafiyan

関連する問題