SSB信号调制解调(滤波法)
更新时间:2023-05-23 22:25:01 阅读量: 实用文档 文档下载
- 滤波法产生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)));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');
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;
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;
end
%计算信号功率
function p = 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;
正在阅读:
SSB信号调制解调(滤波法)05-23
《畜产品加工学》试题12-16
儿童异常行为的心理治疗研究06-06
六年级语文期中考试试卷分析01-22
广播电视安全播出事件/事故管理规定04-12
耐火材料复习08-15
我的玩具作文二年级06-18
宁夏六盘山高中高二上学期期中化学试卷 Word版含解析04-16
基于 NET的超市管理系统的设计与实现01-31
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 解调
- 滤波
- 调制
- 信号
- SSB
- 开题报告样本(修订版)
- 民俗学在线作业答案
- 基础人工挖孔桩安全监理方案
- 【恒心】【好卷速递】四川省眉山市2012届高三4月第二次诊断性考试(数学文)word版
- 爱岗敬业,做一名幸福的堡中教师
- 一种基于训练序列的改进的OFDM同步算法
- 2010-2011第一学期期末理论力学考试A卷_2009级_-答案及评分标准
- 射流真空泵操作规程
- 初二数学人教版秋季班(学生版版)第14讲 解分式方程--基础班
- LoadOrder_Skyrim_2014-06-06T01-23-28
- 师德标兵先进事迹报告材料
- 微电子工艺技术 复习要点答案(完整版)
- 磁场在磁疗中应用的几个问题
- 心血管临床用药的禁忌和慎用集锦
- 《玻璃纤维与矿物棉全书》一本行业工程技术人员的必备工具书
- 建设工程法规及相关知识真题2011年
- 胆囊腺肌症的超声诊断价值
- 第三章 金属切削过程的基本规律
- 中国书法理论体系
- 现代家电通用遥控器的设计