【问题标题】:Convert a column matrix into a logic array [duplicate]将列矩阵转换为逻辑数组[重复]
【发布时间】:2016-06-30 12:29:29
【问题描述】:

我有一个 m x 1 大小的矩阵 Y,其整数范围从 1 到 10。我想创建一个大小为 m x 10 的逻辑数组,逻辑 Y(i) == 1:10。而且我不想使用 for 循环。

我所做的是定义一个函数

f = @(y) (y == 1:10)'.

然后我用arrayfun(f,y,'UniformOutput',false) 调用它,这给了我一个具有正确输出的单元格。然后我将单元格转换为带有cell2mat 的矩阵。

这感觉有点做作,所以我的问题是:有没有更简单的方法?

【问题讨论】:

  • 副本有你想要的。完成后只需转置输出即可。
  • 可能是重复的,而是this 的重复。此外,您提供的解决方案不像 Mohsen 提供的那样干净,也不像 fast 那样。

标签: matlab octave


【解决方案1】:

我认为你正在寻找的是

bsxfun(@eq, y, 1:10)

【讨论】:

  • 是的,这正是我想要的!
【解决方案2】:

如果我猜对了:

f=logical(Y)

http://se.mathworks.com/help/matlab/ref/logical.html

希望对你有帮助

【讨论】:

  • 这将对所有非零 y 返回 true。例如,y=11y=pi 应该返回 false。
  • 我认为这行不通。你看我想要一个来自 mx1 的 mx10 矩阵,即我想把 Y 的每个元素变成一个行向量。使用逻辑似乎按元素执行逻辑操作。
  • 对不起,我看错了!
猜你喜欢
  • 2021-11-25
  • 2019-12-10
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多