generate square wave using piecewise function and plot it
조회 수: 7 (최근 30일)
이전 댓글 표시
Hi,
I'd like to generate a square wave using piecewise func
tion rather than square function, is there someone that can help me? m`Many thanks!
tion rather than square function, is there someone that can help me? m`Many thanks!댓글 수: 0
답변 (1개)
Walter Roberson
2021년 6월 13일
PulseLength = 50;
CycleLength = 1000;
ReduceCycle = @(x) x - CycleLength*floor(x/CycleLength)
syms t
y(t) = piecewise( ReduceCycle(t) < PulseLength, 1, 0)
fplot(y, [0 3100]); ylim([-1.1 1.1])
S(t) = sin(2*pi*t/CycleLength)
fplot(S, [0 3100]); ylim([-1.1 1.1])
ys(t) = y(t) * S(t)
fplot(ys, [0 3100]); ylim([-1.1 1.1])
댓글 수: 3
Walter Roberson
2021년 6월 13일
PulseLength = 50/1000;
CycleLength = 1000/1000;
ReduceCycle = @(x) x - CycleLength*floor(x/CycleLength)
syms t
y(t) = piecewise( ReduceCycle(t) < PulseLength, 1, 0)
fplot(y, [0 3100]/1000); ylim([-1.1 1.1])
S(t) = sin(2*pi*t/CycleLength)
fplot(S, [0 3100]/1000); ylim([-1.1 1.1])
ys(t) = y(t) * S(t)
fplot(ys, [0 3100]/1000); ylim([-1.1 1.1])
yf = fourier(ys)
... not very useful ;-)
You should create a vector of specific numeric times to sample at, and ys(times) to get specific values there. double() that and you have something you can fft()
Watch out that you use a full cycle of times without the time that would be the start of a new cycle. For example for 100 Hz if you sampled for 1 second, do not use times 0:1/100:1, and instead use 0:1/100:1-1/100 . Otherwise the first and the last point would both be the start of a cycle, and that will distort your fft.
참고 항목
카테고리
Help Center 및 File Exchange에서 Stability Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!











