为什么不能在if语句中链接逻辑比较?
10LK
如果满足以下条件之一,我将尝试执行代码块。再次,为清楚起见,如果满足任何条件,我希望代码执行(逻辑或链)。
当我在Matlab中键入以下代码时:
if strmatch(T,'Sd') || strmatch(T,'SuperDev') || ... strmatch(T,'lrnTrialVD') || strmatch(T,'lrnTrialVIS') || ... strmatch(T,'lrnTrialTARGET') || strmatch(T,'lrnTrialAUD')
我收到此错误:
??? Operands to the || and && operators must be convertible to logical scalar values.
有人可以告诉我我哪里出问题了吗?
/ blz
编辑:我使用了错误的功能。我要使用strcmp!
请先登陆或注册
我相信这是因为的返回值strmatch()
是一个数组,而不是标量,并且||
可能未在数组参数上定义。我面前没有MATLAB(只有Octave),但是[1, 2, 3] || [4, 5, 6, 7]
对您有用吗?
另外,最好匹配一个(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))
更紧凑,更易读的正则表达式,并且只需要检查字符串“ T”一次(而不是六次)。
看起来像:
octave-3.2.4.exe:10> T1 = "Sd"T1 = Sdoctave-3.2.4.exe:11> T2 = "Lollipop"T2 = Lollipopoctave-3.2.4.exe:12> regexp(T1,"(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))" )ans = 1octave-3.2.4.exe:13> regexp(T2,"(Sd|SuperDev|lrnTrial(VD|VIS|TARGET|AUD))" )ans = [](1x0)



1条回答