Weird behavior of modulo function

조회 수: 9 (최근 30일)
Milosh
Milosh 2018년 5월 31일
편집: Milosh 2018년 5월 31일
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???

채택된 답변

Walter Roberson
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
Milosh
Milosh 2018년 5월 31일
Thank you very much!
Milosh
Milosh 2018년 5월 31일
편집: Milosh 2018년 5월 31일
@Steven No, I need the symbolic variables for some integration later...

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

제품


릴리스

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by