3

如果我有一个包含 20 个数字的初始数组 A,顺序为 1 到 20,

 A = [1,2,3,4,5,...,20]

并有另一个随机数组 B:

  B = [1, 15, 3, 20, 7]

并希望输出形式为的列向量 C

  C = [1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1]

请注意,C 在 B 具有值的索引处具有 1。

我尝试了以下方法:

n=20;
C = zeros(n, 1);
for i=1:length(B)
   C(B(i))=1;
end
4

3 回答 3

2

单线:

full(sparse(B,1,1,max(B),1))

你也可以放弃完整的功能,大多数matlab矩阵运算都可以处理稀疏矩阵。但当然,这取决于你真正想要做什么。

于 2012-06-12T07:39:22.247 回答
2

另一个单行:

C = accumarray(B(:), 1, [], @(x)1)
于 2012-06-12T13:03:23.370 回答
1

这是一个矢量化的解决方案:

首先,初始化C

   C = zeros( max(B),1);

然后使用数组索引:

   C(B) = 1;
于 2012-06-12T06:46:12.097 回答