MATLAB:向量到逻辑矩阵的无环路转换

时间:2013-10-30 10:08:46

标签: matlab matrix vector

我想将整数向量转换为逻辑矩阵。这就是我想要的方式。假设向量的大小为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中有没有无循环的方法吗?

1 个答案:

答案 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);