2015-01-14 42 views
2

我想根据多个搜索条件返回一个逻辑向量。我认为这很简单,可能确实如此。基于多个条件的逻辑索引

所以我只是想一个非常简单的例子。我有一个类型为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; 
+2

rl = myVec == 8 | myVec == 5;为我工作 – Bharat

+1

你预先分配了一些东西给'rl'?如果你输入'clearvars rl',然后输入第二个方法,你是否仍然会出现这个错误? – Dan

+0

刚刚clearvars rl仍然收到相同的错误。我关闭了Matlab并重新开始,只是运行了我的更新中显示的两行,同样的错误。 Stewie Griffin的例子适合我,虽然 – mHelpMe

回答

2

这应该做的伎俩:

myvec = 1:10; 
vec = (myvec == 5 | myvec == 8) 
vec = 

    0  0  0  0  1  0  0  1  0  0 

这个方法没有括号,所以还有其他的错误。 find版本给出了元素的索引,也没有错误。其实,我找不到重现错误信息的方法。

+0

在这种情况下使用'('是什么意思?这不提供任何操作优先级。你的意思是'(myvec == 5)|(myvec == 8)'也许? – Eypros

+0

确实如此,但海事组织让它更清楚你想要做什么,几乎就像在写1/2/3(在纸上)时不用括号一样,严格来说这不是必须的,但它肯定是地狱帮助= P –