ラベルのベクトル(数字1からkまで)が与えられたとき、各列がそれぞれのラベルがかどうかを表すブールベクトルであるように行列Y
を構成するY
はその列のインデックスと一致します。Matlabの次のループのベクトル化されたバージョン
例えば、labels = [1 2 3 4]
ならば、Y
は次のようになります。
[ [ 1 0 0 0]
[ 0 1 0 0]
[ 0 0 1 0]
[ 0 0 0 1] ]
は、これまでのところ私のコードはこれです:
num_classes = 10;
num_samples = 100;
labels = randi(num_classes, [num_samples, 1]); % Example
Y = zeros([num_samples, num_classes]);
for k = 1:num_classes
Y(:, k) = (y == k);
end
これはちょっと動作しますが、num_classes
またはnum_samples
が非常にあるとき、それは非常に遅くなることがあります大。これをベクトル化する方法はありますか?
を与えますか? – beaker
Matlabバージョン2015a –