用MATLAB做一个仿真,关于方波和三角波的,急急急!高分悬赏在线等

2024-12-15 16:28:48
推荐回答(1个)
回答1:

clc;
clear;
close all;
ts=0.005;
t=0:ts:1;%t的取值范围为0到1,间隔0.005取一个点
fs=1/ts;
N=length(t);
y0=square(10*pi*t);%产生一个5Hz的方波
h=cumtrapz(t,y0);%积分产生三角波

z0=h.*y0;%用方波截取
t=t+0.05;
y1=square(10*pi*t);%产生延迟半个周期的方波
z1=h.*y1;%用方波截取
t=t+0.05;
y2=square(10*pi*t);%产生继续延迟半个周期的方波
z2=h.*y2;%用方波截取
t=t+0.05;
y3=square(10*pi*t);%产生继续延迟半个周期的方波
z3=h.*y3;%用方波截取
t=t+0.05;
y4=square(10*pi*t);%产生继续延迟半个周期的方波
z4=h.*y4;%用方波截取
%至此总共产生4组不同部分的三角波

figure(1)
subplot(2,3,1)
plot(t,y0)
subplot(2,3,2)
plot(t,h)
subplot(2,3,3)
plot(t,z1);
subplot(2,3,4)
plot(t,z2)
subplot(2,3,5)
plot(t,z3)
subplot(2,3,6)
plot(t,z4);%画出各个图形

figure(2)
Z1=fftshift(fft(z1));
k=-(N-1)/2:1:(N-1)/2;
subplot(2,4,1),stem(k*fs/N,abs(Z1)*ts),title('幅频')
subplot(2,4,2),plot(k*fs/N,angle(Z1)),title('相频')

Z2=fftshift(fft(z2));
k=-(N-1)/2:1:(N-1)/2;
subplot(2,4,3),stem(k*fs/N,abs(Z2)*ts),title('幅频')
subplot(2,4,4),plot(k*fs/N,angle(Z2)),title('相频')

Z3=fftshift(fft(z2));
k=-(N-1)/2:1:(N-1)/2;
subplot(2,4,5),stem(k*fs/N,abs(Z3)*ts),title('幅频')
subplot(2,4,6),plot(k*fs/N,angle(Z3)),title('相频')

Z4=fftshift(fft(z2));
k=-(N-1)/2:1:(N-1)/2;
subplot(2,4,7),stem(k*fs/N,abs(Z4)*ts),title('幅频')
subplot(2,4,8),plot(k*fs/N,angle(Z4)),title('相频')

我在Matlab上测试成功了 哪里不懂还可以问我 我也是一名学生 我的邮箱jldxyy@163.com 希望采纳