我想将整数向量转换为逻辑矩阵。这就是我想要的方式。假设向量的大小为M,最大元素为A.输出应为大小为MxA的逻辑矩阵,其中值为v_i的每一行从第1列到(v_i - 1)为0,并且从列开始为1 v_i到A.这是一个例子:
3
4
4
1
输出应为:
0 0 1 1
0 0 0 1
1 1 1 1
1 1 1 1
我可以通过循环很容易地做到这一点,但是在MATLAB中有没有无循环的方法吗?
答案 0 :(得分:3)
易。首先定义您的数据:
vector = [3; 4; 4; 1];
M = length(vector);
A = 4;
然后(使用bsxfun
):
output = bsxfun(@ge, 1:A, vector(:));
或者(使用repmat
):
output = repmat(1:A,M,1) >= repmat(vector(:),1,A);