Difference between a<t<b and t>a && t<b

Hi I am trying to verify existence of even and odd harmonics in e^(-t) periodic with period pi. For that I try to verify f(t)=f(t+pi). and for f(t+pi) i try to add shift using if-else condition according to this link answer should have even harmonics, http://www.intmath.com/fourier-series/5-harmonic-analysis.php I am trying to solve Example 2(b) in Matlab.
Now if i use the condition 0<=t(i)<pi it shows me even harmonic but if i use 0>=t(i) && t(i)<pi it gives neither even nor odd.
So, my question is why isn't Matlab showing same result for both formats. and which format is correct.

 채택된 답변

Guillaume
Guillaume 2015년 4월 28일
편집: Guillaume 2015년 4월 28일

4 개 추천

The first form is not going to give you the result you expect, it is equivalent to:
(0 <= t(i)) < pi
Thus, it will compare t(i) to 0, and the result is either 1 (true) or 0 (false). It then compares that 0 or 1 to pi, which is always smaller. Hence the result will always be true.
The second form is the correct one. You can't link comparisons. You have to perform them one at a time and link the results with logical operators.

댓글 수: 5

Ahmet Cecen
Ahmet Cecen 2015년 4월 28일
You are kidding me, how have I not noticed this years an years of writing conditionals in MATLAB... I wonder if I just got lucky or there is a bug somewhere in some of my old codes...
Guillaume
Guillaume 2015년 4월 28일
I'm not kidding. I don't think there are many languages where chaining comparisons would work since the result of the first comparison is normally a boolean.
John D'Errico
John D'Errico 2015년 4월 28일
If you have been doing this for years, then there are definitely bugs hidden in your code.
Ahmet Cecen
Ahmet Cecen 2015년 4월 28일
Thankfully I found only one in a rotation code for visualization. Apparently I like to separate out the conditionals by default. Still many thanks for pointing this out, could have been a disaster. Would give more bumps if I could!
Maheen
Maheen 2015년 5월 1일
Thank you So much Guillaume, resolved my problem.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Ahmet Cecen
Ahmet Cecen 2015년 4월 28일

1 개 추천

might be because you are supposed to write:
*t(i)>=0 && t(i)<pi*
NOT:
*0>=t(i) && t(i)<pi*

카테고리

도움말 센터File Exchange에서 Introduction to Installation and Licensing에 대해 자세히 알아보기

태그

질문:

2015년 4월 28일

댓글:

2015년 5월 1일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by