【问题标题】:map/multiply values to logical vector将值映射/乘以逻辑向量
【发布时间】:2014-03-28 09:41:35
【问题描述】:

虽然我有一个非常简单的问题,但我没有在旧帖子中找到答案。我想做的(以一种相当优雅的方式)是将一个向量中的值映射/相乘到另一个向量中的逻辑真实元素,保持它的维度。 所以,让我们假设我有两个向量,一个像逻辑一样的向量

a = [1,1,0,0,1,0,1,0]

还有一个整数,比如

b = [3,1,7,4]

我现在想将它们相乘以得到一个向量:

c = [3,1,0,0,7,0,4,0]

对不起,如果我在这里遗漏了显而易见的东西,但我只是没有在其他地方找到答案。

【问题讨论】:

  • 如何将这些乘以数学?维度很重要。您是否有疑问:如何将向量 a 中的 1(真)值替换为向量 b 中的值?
  • 我的 Matlab 现在坏了,如果不是我会试试 c = a; c(a==1) = a(a==1).*b
  • 是的,你是对的!我想用另一个向量中的值替换 1!正是!
  • @HighPerformanceMark:非常感谢!奇迹般有效!我想我真的错过了这里明显的东西:)

标签: matlab


【解决方案1】:

这取决于a 是真正的逻辑类型还是恰好包含0/1。如果符合逻辑,您可以直接使用它进行索引:

c = zeros(size(a));
c(a)=b;

如果不是,请参阅 Divakar 的回答。

【讨论】:

  • 因为a 是真正合乎逻辑的,你的答案是完美的!非常感谢!
【解决方案2】:

一种方法是这样 -

c = a;
c(find(a==1)) = b;

【讨论】:

  • @nkjt 我假设 a 不是逻辑数组的严格情况,并希望确保我正在与 1 进行数字比较。当然,我在a = [1,1,0,0,1,0,1,0] 中为a 分配了“完美的零”,但仍然如此。
  • 这很好用,即使a 不是逻辑类型。谢谢!
  • @kro 当然会!只要完全确保它在我的火箭发射中使用时可以正常工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多