【问题标题】:Matlab, vector comparison and If cycleMatlab,向量比较和If循环
【发布时间】:2015-10-06 10:24:39
【问题描述】:

我是新手,我真的需要帮助。这是我的问题,我有 2 个相同大小的不同向量,例如:

A= [1 2 3 4 2]

B= [0.1 0.2 0.3 0.4 0.2]

现在.. 我想做的是创建第三个向量 D(与前两个相同的大小)填充 B 的一些特定元素。 特别是我想创建一个“if循环”,在其中检查A的“i”元素,如果它在给定范围内,我会选择B的“k”元素并将其放入D中。

我设法做的是只用一个向量创建一个循环,它可以工作..

D=zeros(size(A))
for i=1:length(A)
    if A(i)>= 2 & A(i)<= 4
        D(i)=A(i)
    else
        D(i)=0
    end
end

现在我不知道如何在这个循环中实现 B 向量。我想检查 A 上的值,然后不要选择“i”而是“k”,例如:

if A(i)>= 2 & A(i)<= 4
    "pick B(k) (where i and k are both the second elements of A and B) and put it in D"

有人可以帮忙吗?

【问题讨论】:

  • "where i and k are both the second elements of A and B" 对我来说不是很清楚。你的意思是i 与k 相同用于选择元素吗?如果不是,i 和 k 有什么关系?另外,给定样本数据的预期输出是什么?
  • 所以 "i" 是 A 的索引,而 "k" 是 B 的索引,它们都应该以相同的步骤向前移动,所以当我检查 i 元素时(例如 A 的第一个) 并且在给定的范围内,我将取 k 个元素(B 中的第一个)并将其放在 D 上(在第一个空间中)......等等.. 清楚吗?
  • 应该是(对于这个例子)D=[0 0 0.3 0 0]
  • 这个工作D(A&gt;=2 &amp; A&lt;=4) = B(A&gt;=2 &amp; A&lt;=4)吗?
  • 是的,正在工作!谢谢!

标签: c++ matlab vector


【解决方案1】:
D=zeros(size(B));
idx = find(A>2 & A<4);
D(idx) = B(idx)
D =

   0.00000   0.00000   0.30000   0.00000   0.00000

【讨论】:

  • 虽然这个答案可能是正确的,但请添加一些解释。传递底层逻辑比仅仅提供代码更重要,因为它可以帮助 OP 和其他读者自己解决这个问题和类似问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多