f1=80f2=100%频率
N=5%周期个数
t1=N*1/f1t2=N*1/f2
fs=2000%采样频率,磨毁慎按照采样定理200hz即可瞎敬,但为了光滑好看,因为信号时间较短,还是要多一些
t=0:1/fs:(t1+t2)%信号时间数组
y=sin(f1*2*pi*t).*(t>=0&t<=t1)+sin(f2*2*pi*(t-t1)).*(t>=t1&t<=(t1+t2))
%信号起始点都从0开始的正弦波,相位为零,最后相加。余迹
plot(t,y)
xlabel('时间/S'),ylabel('信号y')
echo offclose all
clc
t0=0.2
ts=0.001
fs=1/ts
%*********************************************************************
fc=300
%*********************************************************************
t=[-t0/2:ts:t0/2]
df=0.25
%*********************************************************************
m=sinc(100*t)
%*********************************************************************
c=cos(2*pi*fc.*t)
u=m.*c
y=u.*c
[M,m,df1]=fftseq(m,ts,df) %对调制信号m(t)求傅里叶变换
M=M/fs
[U,u,df1]=fftseq(u,ts,df) %对调制后的信号u求傅里叶变换
U=U/fs%缩放
[Y,y,df1]=fftseq(y,ts,df) %对混频后的信号y求傅里叶岩前纳变
Y=Y/fs%缩放
%*********************************************************************
%以悔橘下这段程序是专门用来构建在频谱上的滤波器的方法
f_cutoff=150
n_cutoff=floor(150/df1)
f=[0:df1:df1*(length(y)-1)]-fs/2
H=zeros(size(f))
H(1:n_cutoff)=2*ones(1,n_cutoff)
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff)
%********************************************************************
DEM=H.*Y
dem=real(ifft(DEM))*fs %ifft为傅里叶反变换函数,滤波器的输出-解调信号
%乘以fs是为了恢复原信号,因为前面使用了缩放
disp('按任意键可看到混频的效果')
pause
figure(1)
subplot(3,1,1)
plot(f,fftshift(abs(M)))%fftshift:将FFT中的DC分量移到频谱中心
title('原调制信号的频谱图')
xlabel('频率f')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('已调信号的频谱图')
xlabel('频率f')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('混频信号的频谱图')
xlabel('频率f')
disp('按任意键可看到混频器输出的波形的频谱效果')
pause
figure(2)
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('混频信号的频谱图')
xlabel('频率f')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('低通滤波器的频谱图')
xlabel('频率f')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('混频信粗没号通过滤波器后的信号的频谱图')
xlabel('频率f')
disp('按任意键可看到原调制信号和接受信号频谱的比较')
pause
figure(3)
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('原调制信号的频谱图')
xlabel('频率f')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('混频信号通过滤波器后的信号的频谱图')
xlabel('频率f')
disp('按任意键可看到原调制信号和解调器输出信号对比')
pause
figure(4)
subplot(2,1,1)
plot(t,m(1:length(t)))
title('原调制信号的时域图')
xlabel('时间t')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('解调后信号的时域图')
xlabel('时间t')
子程序
%求傅里叶变换的子函数
function [M,m,df]=fftseq(m,ts,df)
fs=1/ts
if nargin==2
n1=0
else
n1=fs/df
end
n2=length(m)
n=2^(max(nextpow2(n1),nextpow2(n2)))
M=fft(m,n)
m=[m,zeros(1,n-n2)]
df=fs/n
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)