簡體   English   中英

從MATLAB中的另一個矩陣產生布爾矩陣

[英]produce boolean matrix from another matrix in matlab

我有矩陣T(60000 * 1)。 在此矩陣的每一行中,我有一個從0到9的數字。

我想從T矩陣制作另一個矩陣Y(60000 * 10)。 Y是一個布爾矩陣,如果第2行中的矩陣T的值為3,則矩陣Y的第2行矩陣必須類似於

[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);

這確實很好,但是我想知道有沒有什么方法可以使效率更高,性能更好?

您可以只使用bsxfun創建所需的logical矩陣。 這將對T中元素的所有組合與數組0:9之間的相等性( eq )進行逐元素檢查。

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

如果您使用的是MATLAB版本R2016b或更高版本,則可以刪除bsxfun因為它將自動執行尺寸bsxfun廣播。

Y = T == 0:9;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM