matlab周期性三角波信号的分解与叠加3
发布网友
发布时间:2023-11-08 13:51
我来回答
共1个回答
热心网友
时间:2024-01-17 16:03
先说分解:对三角波求一次导是方波信号,求二次倒是冲激信号……图会画吧?
再说合成,根据网络提供的程序,懒得自己写了:
A0=5;
f0=20;
N=2048;
fs=1024;
P0=pi/2; %因为三角波的傅里叶展开式是余弦函数,欲用MySin叠加生成,则需将初相位设为90°
b=f0; %将基频赋给b
a=1:2:1024;
PanSin=[]; %正弦信号叠加数组
for n=1:30 %n为叠加个数,设最大30
f0=a(n)*b; %各个谐波频率
[t,xt]=MySin(A0,f0,P0,N,fs); %调用[t,xt]=MySin(A0,f0,P0)函数
PanSin(1:length(t),n)=1/(a(n)^2)*xt %进行叠加
end %30次叠加完成后,PanSin数组中是30列长度为length(t)的数据
b=PanSin'; %求转置
y2=A0/2+sum(b(1:2,:)); %取前2行叠加
y5=A0/2+sum(b(1:5,:)); %取前5行叠加
y10=A0/2+sum(b(1:10,:)); %取前10行叠加
y20=A0/2+sum(b(1:20,:)); %取前20行叠加
y30=A0/2+sum(PanSin'); %取前30行叠加
plot(t(1:103),y2(1:103),'-r'); %绘图,只显示2个周期
hold on
plot(t(1:103),y5(1:103),'-g');
plot(t(1:103),y10(1:103),'-y');
plot(t(1:103),y20(1:103),'-m');
plot(t(1:103),y30(1:103),'-b');
title(['用正弦信号构造三角波信号'],'fontsize',14);
xlabel('t(ms)','fontsize',14); %设置x轴标题为t(ms)
ylabel('x(t)','fontsize',14); %设置y轴标题为x(t)
axis tight;
legend('2个正弦信号','5个正弦信号','10个正弦信号','20个正弦信号','30个正弦信号');
这个东西网上很多哦。自己先琢磨一下,实在不懂再问我吧。