SSB信号调制解调滤波法.docx

上传人:b****5 文档编号:30702606 上传时间:2023-08-19 格式:DOCX 页数:14 大小:17.84KB
下载 相关 举报
SSB信号调制解调滤波法.docx_第1页
第1页 / 共14页
SSB信号调制解调滤波法.docx_第2页
第2页 / 共14页
SSB信号调制解调滤波法.docx_第3页
第3页 / 共14页
SSB信号调制解调滤波法.docx_第4页
第4页 / 共14页
SSB信号调制解调滤波法.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

SSB信号调制解调滤波法.docx

《SSB信号调制解调滤波法.docx》由会员分享,可在线阅读,更多相关《SSB信号调制解调滤波法.docx(14页珍藏版)》请在冰豆网上搜索。

SSB信号调制解调滤波法.docx

SSB信号调制解调滤波法

SSB信号调制解调(滤波法)

SSB(滤波法法)调制解调Matlab.m文件源码

%SSB信号调制解调

clear;clc;

f0=1;%信源信号频率(Hz)

E0=1;%信源信号振幅(V)

E=1;%载波分量振幅(V)

fc=10;%载波分量频率(Hz)

t0=1;%信号时长

snr=15;%解调器输入信噪比dB

dt=0.003;%系统时域采样间隔

fs=1/dt;%系统采样频率

df=0.001;%所需的频率分辨率

t=0:

dt:

t0;

Lt=length(t);%仿真过程中,信号长度

snr_lin=10^(snr/10);%解调器输入信噪比

%-------------画出调制信号波形及频谱

%产生模拟调制信号

m=E*cos(2*pi*f0*t);

L=min(abs(m));%包络最低点

R=max(abs(m));%包络最高点

%画出调制信号波形和频谱

clf;

figure

(1);

%%

%画出调制信号波形

subplot(411);

plot(t,m(1:

length(t)));

axis([0,t0,-R-0.3,R+0.3]);%设置坐标范围

xlabel('t');title('调制信号');

set(gca,'YTick',-R:

1:

R);

subplot(412);

[M,m,df1,f]=T2F_new(m,dt,df,fs);%求出调制信号频谱

[Bw_eq]=signalband(M,df,t0);%求出信号等效带宽

f_start_low=fc-Bw_eq;%求出产生下边带信号的带通滤波器的起始频率f_cutoff_low=fc;%求出产生下边带信号的带通滤波器的截止频率f_start_high=fc;%求出产生上边带信号的带通滤波器的起始频率f_cutoff_high=fc+Bw_eq;%求出产生上边带信号的带通滤波器的截止频率

plot(f,fftshift(abs(M)));%画出调制信号频谱%M:

傅里叶变换后的频谱序列

SSB(滤波法法)调制解调Matlab.m文件源码

xlabel('f');title('调制信号频谱');

axis([-fc-5*f0,fc+5*f0,0,max(M)+0.3]);

set(gca,'XTick',-10:

10:

10);

set(gca,'XGrid','on');

%%

%载波及其频谱

subplot(413);

c=cos(2*pi*fc*t);%载波

plot(t,c);

axis([0,t0,-E-0.2,E+0.2]);

xlabel('t');title('载波');

subplot(414);%载波频谱

[C,c,df1,f]=T2F_new(c,dt,df,fs);

plot(f,fftshift(abs(C)));%画出载波频谱

xlabel('f');title('载波频谱');

axis([-fc-5*f0,fc+5*f0,0,max(C)+0.3]);

set(gca,'XTick',-10:

10:

10);

set(gca,'XGrid','on');

%%

%已调信号及其频谱

figure

(2);

subplot(321);%画已调信号

u=m(1:

Lt).*c(1:

Lt);

plot(t,u);

axis([0,t0,-max(u)-0.5,max(u)+0.5]);

xlabel('t');title('DSB信号');

set(gca,'YTick',-max(u):

1:

max(u));

subplot(322);

[U,u,df1,f]=T2F_new(u,dt,df,fs);

plot(f,fftshift(abs(U)));%画出已调信号频谱

xlabel('f');title('DSB信号频谱');

axis([-fc-5*f0,fc+5*f0,0,max(U)+0.3]);

set(gca,'XTick',-10:

10:

10);

set(gca,'XGrid','on');

%%

%滤波法产生SSB信号

[H_low,f_low]=bp_f(length(u),f_start_low,f_cutoff_low,df1,fs,1);%求滤波法产生下边带需要的带通滤波器

[H_high,f_high]=bp_f(length(u),f_start_high,f_cutoff_high,df1,fs,1);

SSB(滤波法法)调制解调Matlab.m文件源码

%[H,f]=bp_f(length(sam),f_start,f_cutoff,df1,fs,1);

subplot(323);

plot(f_low,fftshift(abs(H_low)));%画出带通滤波器

xlabel('f');title('下边带带通滤波器');

axis([-f_cutoff_low-1,f_cutoff_low+1,-0.05,1.05]);

subplot(324);

plot(f_high,fftshift(abs(H_high)));%画出带通滤波器xlabel('f');title('上边带带通滤波器');

axis([-f_cutoff_high-1,f_cutoff_high+1,-0.05,1.05]);

subplot(325);

plot(f_low,fftshift(abs(H_low)));holdon;%画出带通滤波器

plot(f,fftshift(abs(U)));%画出已调信号频谱axis([-fc-5,fc+5,-0.05,1.05]);

xlabel('f');title('下边带信号');

subplot(326);

plot(f_high,fftshift(abs(H_high)));holdon;%画出带通滤波器

plot(f,fftshift(abs(U)));%画出已调信号频谱axis([-fc-5,fc+5,-0.05,1.05]);

xlabel('f');title('上边带信号');

%%

%----------------经过带通滤波器,产生单边带信号(以上边带信号为例)

samuf=H_high.*U;%滤波器输出信号的频谱

[samu]=F2T_new(samuf,fs);%滤波器输出信号的波形

figure(3);

subplot(321);

plot(t,samu(1:

Lt));

axis([0,t0,-max(samu)-0.3,max(samu)+0.3]);

xlabel('t');title('上边带信号');

%%

[samuf,samu,df1,f]=T2F_new(samu(1:

Lt),dt,df,fs);%上边带信号频谱

subplot(322);

plot(f,fftshift(abs(samuf)));%画出经过理想带通滤波器后信号频谱xlabel('f');title('上边带信号频谱');

axis([-fc-5*f0,fc+5*f0,0,max(samuf)+0.1]);

set(gca,'XTick',-10:

10:

10);

set(gca,'XGrid','on');

SSB(滤波法法)调制解调Matlab.m文件源码

%%

%将已调信号送入信道

%先根据所给信噪比产生高斯白噪声

signal_power=power_x(samu(1:

Lt));%已调信号的平均功率

noise_power=(signal_power*fs)/(snr_lin*4*Bw_eq);%求出噪声方差(噪声均值为0)noise_std=sqrt(noise_power);%噪声标准差

noise=noise_std*randn(1,Lt);%产生噪声

%画出信道高斯白噪声波形及频谱,此时,噪声已实现,为确知信号,可求其频谱

subplot(323);

plot(t,noise);

axis([0,t0,-max(noise),max(noise)]);

xlabel('t');title('噪声信号');

subplot(324);

[noisef,noise,df1,f]=T2F_new(noise,dt,df,fs);%噪声频谱

plot(f,fftshift(abs(noisef)));%画出噪声频谱

xlabel('f');title('噪声频谱');

%%

%信道中的信号%叠加了噪声的已调信号频谱

sam=samu(1:

Lt)+noise(1:

Lt);

subplot(325);

plot(t,sam);

axis([0,t0,-max(sam),max(sam)]);

xlabel('t');title('信道中的信号');

subplot(326);

[samf,sam,df1,f]=T2F_new(sam,dt,df,fs);%求出叠加了噪声的已调信号频谱plot(f,fftshift(abs(samf)));%画出叠加了噪声的已调信号频谱xlabel('f');title('信道中信号的频谱');

axis([-fc-5*f0,fc+5*f0,0,max(samf)+0.1]);

set(gca,'XTick',-10:

10:

10);

set(gca,'XGrid','on');

%%

%----------------经过带通滤波器

%经过理想滤波器后的信号及其频谱

DEM=H_high.*samuf;%滤波器输出信号的频谱

[dem]=F2T_new(DEM,fs);%滤波器输出信号的波形

figure(4);

SSB(滤波法法)调制解调Matlab.m文件源码

subplot(321);%经过理想带通滤波器后的信号波形

plot(t,dem(1:

Lt));%画出经过理想带通滤波器后的信号波形

axis([0,t0,-max(dem)-0.3,max(dem)+0.3]);

xlabel('t');title('理想BPF输出信号');

%%

[demf,dem,df1,f]=T2F_new(dem(1:

Lt),dt,df,fs);%求经过理想带通滤波器后的信号频谱subplot(322);

plot(f,fftshift(abs(demf)));%画出经过理想带通滤波器后信号频谱xlabel('f');title('理想BPF输出信号频谱');

axis([-fc-5*f0,fc+5*f0,0,max(demf)+0.1]);

set(gca,'XTick',[-10:

10:

10]);

set(gca,'XGrid','on');

%%

%--------------和本地载波相乘,即混频

subplot(323);

plot(t,c(1:

Lt));

axis([0,t0,-E-0.2,E+0.2]);

xlabel('t');title('本地载波');

subplot(324);%频谱载波

[C,c,df1,f]=T2F_new(c(1:

Lt),dt,df,fs);

plot(f,fftshift(abs(C)));%画出载波频谱

xlabel('f');title('本地载波频谱');

axis([-fc-5*f0,fc+5*f0,0,max(C)+0.3]);

set(gca,'XTick',[-10:

10:

10]);

set(gca,'XGrid','on');

%再画出混频后信号及其频谱

der=dem(1:

Lt).*c(1:

Lt);%混频

%%

subplot(325);%画出混频后的信号

plot(t,der);

axis([0,t0,-R,R]);

xlabel('t');title('混频后的信号');

subplot(326);

[derf,der,df1,f]=T2F_new(der,dt,df,fs);%求出混频后的信号频谱

plot(f,fftshift(abs(derf)));%画出混频后的信号频谱

xlabel('f');title('混频后的信号频谱');

axis([-2*fc-5*f0,2*fc+5*f0,0,max(derf)+0.3]);

SSB(滤波法法)调制解调Matlab.m文件源码

set(gca,'XTick',[-10:

10:

10]);

set(gca,'XGrid','on');

%%

%-----------------经过低通滤波器

%画出理想低通滤波器

figure(5);

[LPF,f]=lp_f(length(der),Bw_eq,df1,fs,1);%求出低通滤波器

subplot(411);

plot(f,fftshift(abs(LPF)));%画出理想低通滤波器

xlabel('f');title('理想LPF');

axis([-f0-Bw_eq,f0+Bw_eq,-0.05,1.05]);

%%

%混频信号经过理想低通滤波器后的频谱及波形

DM=LPF.*derf;%理想低通滤波器输出的频谱

[dm]=F2T_new(DM,fs);%滤波器的输出波形

subplot(412);

plot(t,dm(1:

Lt));%画出经过低通滤波器后的解调波形axis([0,t0,-max(dm)-0.2,max(dm)+0.2]);

xlabel('t');title('恢复信号');

set(gca,'YTick',[-1:

0.5:

1]);

set(gca,'YGrid','on');

subplot(413);

[dmf,dm,df1,f]=T2F_new(dm(1:

Lt),dt,df,fs);%求LPF输出信号的频谱

plot(f,fftshift(abs(dmf)));%画出LPF输出信号的频谱xlabel('f');title('恢复信号频谱');

axis([-fc,fc,0,max(abs(dmf))+0.1]);

set(gca,'XTick',[-10:

10:

10]);

set(gca,'XGrid','on');

%%

subplot(414);

plot(t,m(1:

Lt));%画出调制信号波形

xlabel('t');title('调制信号');

set(gca,'YTick',[-R:

1:

R]);

axis([0,t0,-R-0.3,R+0.3])

xlabel('t');title('调制信号');

SSB(滤波法法)调制解调Matlab.m文件源码

子函数

%序列的傅里叶变换

%各参数含义与子函数T2F中的完全相同,完成序列的傅里叶变换

function[M,m,df]=fftseq(m,ts,df)

fs=1/ts;

ifnargin==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;

end

%计算信号功率

functionp=power_x(x)

%x:

输入信号

%p:

返回信号的x功率

p=(norm(x).^2)./length(x);

end

%将信号从频域转换到时域

function[m]=F2T(M,fs)

%----------------输入参数

%M:

信号的频谱

%fs:

系统采样频率

%----------------输出(返回)函数

%m:

傅里叶逆变换后的信号,注意其长度为2的整数次幂,利用其画波形时,要注意选取m的一部分,选取长度和所给时间序列t的长度要一致,plot(t,m(1:

length(t))),否则会出错m=real(ifft(M))*fs;

end

%将信号从时域转换到频域

function[M,m,df1,f]=T2F(m,ts,df,fs)

SSB(滤波法法)调制解调Matlab.m文件源码

%----------------输入参数

%m:

信号

%ts:

系统时域采样间隔、

%df:

所需的采样频率

%fs:

系统采样频率

%----------------输出(返回)函数

%M:

傅里叶变换后的频谱序列

%m:

输入信号参与傅里叶变换后对应序列,需要注意的是,该序列与输入信号m的区别,其长度是不一样的,输入的m长度不一定是2的整数次幂,而傅里叶变换要求输入信号长度为2的整数次幂,

%故傅里叶变换前需要对m信号进行补零操作,其长度有所增加,估输出参数中的m为补零后的输入信号,其长度与输入参数m不一样,但与M,f的长度是一样的,

%并且,其与时间序列t所对应的序列m(1:

length(t))与输入参数中的m是一致的。

%df1:

返回的频率分辨率

%f:

与M相对应的频率序列

[M,m,df1]=fftseq(m,ts,df);

f=[0:

df1:

df1*(length(m)-1)]-fs/2;

M=M/fs;

End

%低通滤波器

function[H,f]=lp_f(n,f_cutoff,df1,fs,p)

%低通滤波器函数输入设计的滤波器参数,产生低通滤波器频率特性函数H和频率向量f%------------输入参数

%n低通滤波器的输入信号长度

%f_cutoff低通滤波器截止频率

%df1频率分辨率

%fs抽样频率

%p滤波器振幅

%------------输出(返回)函数

%H低通滤波器频率响应

%f频率向量

%滤波器设计

n_cutoff=floor(f_cutoff/df1);

f=[0:

df1:

df1*(n-1)]-fs/2;

H=zeros(size(f));

H(1:

n_cutoff)=p*ones(1,n_cutoff);

H(length(f)-n_cutoff+1:

length(f))=p*ones(1,n_cutoff);

end

%带通滤波器

SSB(滤波法法)调制解调Matlab.m文件源码

function[H,f]=bp_f(n,f_start,f_cutoff,df1,fs,p)

%带通滤波器函数,输入设计的滤波器参数,产生带通滤波器频率特性函数H和频率向量f%------------输入参数

%n带通滤波器的输入信号长度

%f_start通带起始频率

%f_cutoff带通滤波器截止频率

%df1频率分辨率

%fs抽样频率

%p滤波器振幅

%------------输出(返回)函数

%H带通滤波器频率响应

%f频率向量

%滤波器设计

n_cutoff=floor(f_cutoff/df1);

n_start=floor(f_start/df1);

f=[0:

df1:

df1*(n-1)]-fs/2;

H=zeros(size(f));

H(n_start+1:

n_cutoff)=p*ones(1,n_cutoff-n_start);

H(length(f)-n_cutoff+1:

length(f)-n_start)=p*ones(1,n_cutoff-n_start);

end

function[Bw_eq]=signalband(sf,df,T)

%计算信号等效带宽

%sf:

信号频谱

%df:

频率分辨率

%T:

信号持续时间

sf_max=max(abs(sf));

Bw_eq=sum(abs(sf).^2)*df/T/sf_max.^2;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1