我正在尝试返回基于多个搜索条件的逻辑向量。我认为这很简单,而且确实可能是这样。
所以我只是尝试一个非常简单的例子。我有一个 double 类型的 10 x 1 向量,称为 myVec。如果 myVec 中的元素等于 5 或 8,我希望返回 1,否则返回 0。
myVec
5
3
8
9
1
8
5
6
7
5
我的结果向量应如下所示,
Result
1
0
1
0
0
1
1
0
0
1
我尝试过以下方法,
rl = find(myVec == 8 | myVec == 5);
rl = myVec == 8 | myVec == 5;
两次尝试都给出了消息,
错误:等号左侧的表达式不是有效的赋值目标。
更新
这是我正在玩的实际向量,
myVec = [3 5 12 34 62 98 45 12 12 64 20 5 5 94 87 21 20]';
这是我尝试使用的代码行,它会引发错误,但看起来它应该可以工作,
rl = myVec == 12 | myVec == 5 | myVec = 20;
最佳答案
这应该可以解决问题:
myvec = 1:10;
vec = (myvec == 5 | myvec == 8)
vec =
0 0 0 0 1 0 0 1 0 0
这在没有括号的情况下也有效,所以还有其他问题。 find
版本给出了元素的索引,也没有错误。实际上,我找不到重现您的错误消息的方法。
关于matlab - 基于多种条件的逻辑索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938066/