[英]MATLAB Generate matrix with logical values according to vector
我有一个垂直的Nx1矩阵A充满整数。
A:
+---+
| 4 |
| 3 |
| 1 |
| . |
+---+
我的目标是创建一个NxM矩阵B,其中如果每个单元格的行小于或等于A中的相应数字,则其中每个单元格的值为1,其余为0。
B:
+-------------+
| 1 1 1 1 0 . |
| 1 1 1 0 0 . |
| 1 0 0 0 0 . |
| . . . . . . |
+-------------+
这可以通过逐行迭代来实现,但我正在尝试找到一种更快的方法。 我觉得这可以通过逻辑索引完成,但不能想到如何完全脱离我的头脑。
为我的问题找到了解决方案。
index = repmat(1:max(A),length(A),1);
B = ones(length(A),max(A));
B(index>repmat(A,1,max(A))) = 0;
index是一个NxM矩阵,其中一个单元格的值等于其列号。 只要该值大于A中的值,B中的相应单元格就会设置为0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.