Weird behavior of modulo function
조회 수: 9 (최근 30일)
이전 댓글 표시
Why is this code plotting a straight line?
syms x(t);
x(t) = mod(t, 3);
tSamp = -10:0.01:10;
figure(1);
plot(tSamp, x(tSamp));

mod(a, b) should return a value in the range [0, b), and here it is like mod(t, 3)==t.
What is happening???
댓글 수: 0
채택된 답변
Walter Roberson
2018년 5월 31일
Symbolic mod() does not do what you think it does. And that's a nuisance that has caught me multiple times as well!!
"If a is a polynomial expression, then mod(a,b) finds the modulus for each coefficient."
t is a polynomial in t, equivalent to 1*t + 0 . That is coefficients [1 0]. mod([1 0], 3) is [1 0], so mod(t,3) is 1*t + 0, which is just t.
You have to use something like t - 3*floor(t/3)
댓글 수: 3
추가 답변 (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!