使用“or”运算符的“if”语句。

4906视图(过去30天)
莎拉
莎拉 2012年2月2日
大家好,
我有一个非常简单的问题……我已经研究了一段时间,但无法解决它。这基本上就是我想说的:
对于r=1:长度(频率秒)-1
如果Freqsec(1,R + 1)> Freqsec(R)* 1.01“或”频率秒(1,r+1)
LagStart=[FreqSec(1,r)r];
打破;
终止
终止
FreqSec是一个有很多值的向量…通常在0.99和1.01的范围内,除了在一定的间隔内。我想检测值开始从0.99到1.01范围变化的确切索引点。
提前感谢您的帮助:)

公认的答案

沃尔特·罗伯森
沃尔特·罗伯森 2012年2月3日
如果Freqsec(1,R + 1)> Freqsec(R)* 1.01 |频率秒(1,r+1)
或者
如果频率秒(1,r+1)>频率秒(r)*1.01 | |频率秒(1,r+1)<频率秒(r)*0.99
The first of these is more general. The second of these, , is the short-circuiting OR that does not bother to evaluate the second expression if it already knows the final result after the first operation. The operator can only be used between expressions that produce scalar outputs.
1评论
哈利麦克德罗姆
哈利麦克德罗姆 2013年11月23日
很好地澄清了|和之间的区别!

登录以发表评论。

更多答案(2)

杰夫
杰夫 2012年2月3日
所以你想要有效范围内的最后一个索引?
我不知道你为什么要乘以1.01和0.99。也许你对问题的描述不正确,或者这就是你遇到困难的原因。我认为你正在尝试这样做:
idx=查找(频率秒>=0.99和频率秒<=1.01,1,“最后”)
lagstart = [freqsec(1,Idx)Idx];
或者,因为它是对称的:
idx=查找(abs(FreqSec-1)<=0.01,1,“最后”)
如果您想要第一个超出范围值的索引,请使用:
idx=查找(abs(FreqSec-1)>0.01,1,“第一”)
参数“first”是可选的,但为了清晰起见。
-G-
1评论
杰夫
杰夫 2012年2月3日
哎呀,那些带有“last”的语句是不正确的。你最好用“first”语句减去1。

登录以发表评论。


雷赫曼塔巴苏姆
雷赫曼塔巴苏姆 2021年4月30日
我= 5
而我>=-1
暂停(1)
fprintf(“%d\n”,i)
我= I-1
如果i==0
打破
终止
终止
这是我为倒数计时器的开始按钮gui编写的代码,所以任何人都知道如何在倒数计时器运行时停止它

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!