SSB信号调制解调(滤波法)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%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:傅里叶变换后的频谱序列
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);
%[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)));hold on; %画出带通滤波器
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)));hold on; %画出带通滤波器
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');