在MATLAB中将整数转换为逻辑数组

Stu*_*tud 3 arrays indexing matlab

我想将整数转换为i具有第i个非零元素的逻辑向量.这可以完成1:10 == 2,返回

0     1     0     0     0     0     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

现在,我想为每一行向量化这个过程.写作repmat(1:10, 2, 1) == [2 5]'我希望得到

0     1     0     0     0     0     0     0     0     0
0     0     0     0     1     0     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

但相反,会发生此错误:

使用==
矩阵尺寸时出错必须同意.

我可以矢量化这个过程,还是for循环唯一的选择?

bea*_*ker 9

你可以使用bsxfun:

>> bsxfun(@eq, 1:10, [2 5].')
ans =

   0   1   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   0
Run Code Online (Sandbox Code Playgroud)

注意.'第二个向量上的转置; 这一点很重要.

  • @AndrasDeak我一直在和我的绝地武士训练师一起训练. (2认同)