close 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
你这LPF函碰银数是别人写的吧,里面还有一个新的F2T()函数不知道是什么,不是MATLAB自带的,也是别人笑耐宴写的,你没拿过来吧。不管了,你按我给的写,直接全复制到一个文件里,运行就行了。
close all
clear all
dt=0.001
fm=1
fc=10
T=5
t=0:dt:T
mt=sqrt(2)*cos(2*pi*fm*t)
s_dsb=mt.*cos(2*pi*fc*t)
B=2*fm
figure(1)
subplot(311)
plot(t,s_dsb)
hold on
plot(t,mt,'r--')
title('DSB调制信号')
xlabel('t')
f_dsb=fft(s_dsb)
temp=f_dsb
temp([50:4953])=0
s_ssb=ifft(temp)
subplot(312)
plot(t,s_ssb)
hold on
plot(t,mt,'亩消r--')
title('SSB调制信号(下边带)')
xlabel('t')
temp=f_dsb
temp([1:49])=0
temp([4953:end])=0
s_ssb=ifft(temp)
subplot(313)
plot(t,s_ssb)
hold on
plot(t,mt,'r--')
title('SSB调制信号(上边带)')
xlabel('t')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)