将列矩阵转换为逻辑数组

时间:2016-06-30 12:29:29

标签: matlab octave

我有一个m×1大小的矩阵Y,整数范围从1到10.我想用逻辑Y(i)== 1:10创建一个大小为m x 10的逻辑数组。而且我不想使用for循环。

我所做的是定义一个功能

f = @(y) (y == 1:10)'.

然后我用arrayfun(f,y,'UniformOutput',false)调用它,它给出了一个输出正确的单元格。然后我将单元格转换为cell2mat的矩阵。

这感觉有点做作,所以我的问题是:有更简单的方法吗?

2 个答案:

答案 0 :(得分:5)

我认为你在寻找的是

bsxfun(@eq, y, 1:10)

答案 1 :(得分:0)

如果我找对你:

f=logical(Y)

http://se.mathworks.com/help/matlab/ref/logical.html

希望这有帮助