why the square wave is just a line?
조회 수: 3 (최근 30일)
이전 댓글 표시
i'm trying to get a square wave graph for 5 cycles. but the plot is just a line
T = 2.25;
samples = 500;
t = linspace(-2.75,T,samples+1); % 5 cycles
t(end) = [];
s(-2.75 <= t < -0.25) = 1;
s(-0.25 <= t < 2.25) = -1;
N = 5;
s = repmat(s, [1 N]);
t = linspace(-2.75, N*T, N*samples + 1);
t(end) = [];
figure()
plot(t, s)
thanks
댓글 수: 0
채택된 답변
Star Strider
2018년 3월 25일
You can only do paired comparisons. Break the logic up into two separate conditions and it works:
s(-2.75 <= t & t < -0.25) = 1;
s(-0.25 <= t & t < 2.25) = -1;
댓글 수: 3
Jan
2018년 3월 25일
@Star Strider: You gave your answer 10 minutes before I posted my one. I'm sure that I've pressed the Reload button directly before starting to type my answer, but I did not see yours. It took me a minute to type. This means that it takes about 9 minutes until I can see a given answer.
I had this impression repeatedly in the last months, that I've posted answers, which have been given already but have not been visible for me. It looks a little bit awkward, like a parrot. I'm going to ask a question, if somebody else share this experience.
추가 답변 (1개)
Jan
2018년 3월 25일
The problem is here:
s(-2.75 <= t < -0.25) = 1;
s(-0.25 <= t < 2.25) = -1;
The condition -2.75 <= t < -0.25 is evaluated from left to right:
- tmp = -2.75 <= t: This is either FALSE (0) or TRUE (1)
- tmp < -0.25: This is FALSE in every case, because neither 0 nor 1 are lower than -0.25.
You want:
s(-2.75 <= t & t < -0.25) = 1;
s(-0.25 <= t & t < 2.25) = -1;
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!