how to plot a periodic function?
이전 댓글 표시
Hey there,

I have to construct a periodic function of a signal according to the image shown in order to apply fourier series into it. I tried using piecewise command but I failed to get an appropriate output. What is the point that I'm missing? My code is shown below:
clc;
clear all;
a=3.2;
t1=5;
t2=7;
t3=12;
t4=17;
%constructing partial periodic function
syms a(x)
T=17;
i=-2;
interval=[0 -i*T];
pw=[];
while i<=diff(interval/(2*T))
a(x)=piecewise(i*T<=mod(x,17)<=t1+(i*T),3.2,t1+(i*T)<=mod(x,17)<=t2+(i*T),-1.6*(x-i*T)+11.2*4*i,t2+(i*T)<=mod(x,17)<=t3+(i*T),-0.64*(x-i*T)+4.48*4*i,t3+(i*T)<=mod(x,17)<=t4+(i*T),-3.2);
i=i+1;
pw=[pw a ];
end
pw
fplot(pw,interval)
채택된 답변
추가 답변 (2개)
a = 3.2;
t1 = 5;
t2 = 7;
t3 = 12;
t4 = 17;
fun = @(x) a*(x>=0 & x<=t1) + (-a/(t2-t1)*(x-t2)).*(x>t1 & x<=t2) + (-a/(t3-t2)*(x-t3)-a).*(x>t2 & x<=t3) + (-a)*(x>t3 & x <t4);
Fun = @(x) fun(mod(x,t4));
x = 0:0.01:17;
plot(x,Fun(x))
grid on
Walter Roberson
2022년 12월 1일
편집: Walter Roberson
2022년 12월 1일
0 개 추천
You do not need any loop. You generate one cycle based upon t1 t2 t3 t4 and piecewise(). Then you substitute mod(Time,t4) to the piecewise, to end up with a piecewise that is cyclic every interval of t4.
Once you have the piecewise() then you can ask to rewrite(EXPRESSION, 'heaviside') to get an expression that, in theory, can be pass through fourier() . In practice the mod() is going to cause problems.
카테고리
도움말 센터 및 File Exchange에서 Mathematics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




