从matlab中的另一个矩阵生成布尔矩阵

时间:2016-12-11 22:27:57

标签: algorithm matlab matrix

我有矩阵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);

这个工作真的很好,但我想知道有哪些方法哪个更有效,性能更好?

1 个答案:

答案 0 :(得分:2)

您只需使用bsxfun即可创建所需的logical矩阵。这将对T和数组0:9中所有元素组合之间的相等性(eq)执行元素检查。

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

如果您使用的是MATLAB版本R2016b或更高版本,则可以删除bsxfun,因为它会自动执行尺寸广播。

Y = T == 0:9;