我需要做的是,給定一個標籤矢量(數字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 –