1

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

4

1 回答 1

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);
于 2013-10-30T10:14:31.570 回答