一、模拟通信系统性能分析

1、系统框图

2、信噪比定义

(1)输入信噪比:

(2)输出信噪比:

(3)调制制度增益:

3、模拟通信系统分析等价模型

即自己产生一个高斯白噪声,加入到调制信号,然后在送入解调器。

4、通信系统新能分析

(1) AM 解调器
      AM 信号可用相干解调或者包络检波两种方法解调。对于100% 调制,且调制信号m(t) 是正弦波情况下,相干解调的调制制度增益为GAM = 2/3。对于包络检波来说,在大信噪比情况下它的性能与相干解调器的性能几乎一样。小信噪比的情况下,
解调器输出信噪比随着输入信噪比的减小急剧恶化。这种现象称为解调器的门限效应。
(2)FM 解调器

FM 主要采用鉴频器进行解调。在大的信噪比条件下,调频制度增益与调频指数mf 存在密切关系,加大调制指数可使得调频系统抗噪性能迅速改善,其代价是增加了传输带宽。当输入信噪比下降到一定程度的时候就会出现门限效应,输出信噪比将
急剧恶化。

二、相关源码

function n_t = bandlimit_noise(N,fs,fc,B,n_pow)
% 产生特定功率的带限高斯白噪声
% 输入: N - 产生的噪声的长度
% fs - 仿真采样率
% fc - 带限噪声中心频率
% B - 带限噪声的带宽
% n_pow - 带限噪声的功率
% 输出: n_t - 带限噪声 %带通阶数
filter_b_L = 4000;
%带通设计
filter_b = fir1(4000,[(fc - B/2) / (fs/2) , (fc + B/2) / (fs/2)]);
%全带宽功率
n_fullband_pow = n_pow/(B/(fs/2));
%产生噪声信号
noise_t = sqrt(n_fullband_pow) * randn( N + filter_b_L,1);
%信号经过带通滤波器
n_t = filter(filter_b,1,noise_t);
%滤除前面的零状态响应
n_t = n_t(end-N+1:end); end

调用方法:

% 产生特定功率的带限高斯白噪声
% 输入: N - 产生的噪声的长度
% fs - 仿真采样率
% fc - 带限噪声中心频率
% B - 带限噪声的带宽
% n_pow - 带限噪声的功率
% 输出: n_t - 带限噪声 clc,clear; N = 5e5;
fs = 20e3;
fc = 3e3;
B = 400;
n_pow = 0.1; t = (1:N)/fs;
noise = bandlimit_noise(N,fs,fc,B,n_pow); plot(t,noise); var(noise)

function snr_est = sine_snr_est(y)
% 正弦波信噪比估计
% 输入信号序列;输出为信号信噪比(单位dB) N = floor(length(y)/2) * 2;
y = y(1:N);
y = y.*blackman(N);
f_n = abs(fft(y));
f_n = f_n(1:N/2);
f_pow = abs(f_n).^2; [s_pow_est idx]= max(f_pow);
s_pow_idx = [idx-4:idx+4];
s_pow_est = sum(f_pow(s_pow_idx));
n_pow_est = sum(f_pow) - s_pow_est; snr_est = db(s_pow_est/n_pow_est,'power'); end

调用方法:

% 根据参数产生AM信号
% 输入: N - 产生的信号长度
% fs - 仿真采样率
% fm - 调制信号频率
% Am - 调制信号幅度
% yita - 调幅系数
% fc - 载波频率
% Ac - 载波幅度
% 输出:s_t - 已调信号
% s_pow - 已调信号功率 clc,clear; %噪声(第一题的)
N = 5e4;
fs = 20e3;
fc = 3e3;
B = 400;
n_pow = 0.1; %正弦信号
t = ((0:N-1) / fs)';
m_t = sin( 2*pi*fc*t );
m_t_pow = sum(m_t.^2) / N; %产生高斯带通噪声
SNR_in = -10:40;
n_pow = m_t_pow./(10.^(SNR_in/10));
for i=1:length(n_pow)
n_t = bandlimit_noise(N,fs,fc,B,n_pow(i));
sign_in = m_t + n_t;
SNR_out(i) = sine_snr_est(sign_in);
end plot(SNR_in,SNR_out);
xlabel('实际SNR(Si/Ni)');
ylabel('检测SNR(So/No)');

AM性能分析代码:

function snr_db_o = am_receiver(snr_db_i,flag)
% 根据输入信噪比snr_db_i,通过仿真确定AM解调器输出信噪比 % 仿真参数
fs = 20e3;
N = 1000000;
% 载波参数
fc = 2e3;
Ac = 1; % 调制信号参数
Am = 1;
bw = 300;
fm = bw/2;
yita = 1; % 产生调制信号
[s_t,s_pow] = am_modulate(N,fs,fm,Am,yita,fc,Ac); % 加入噪声
n_pow = s_pow/(10^(snr_db_i/10));
n_t = bandlimit_noise(N,fs,fc,bw,n_pow);
s_t = s_t + n_t; % 解调
if flag==1
r_demod_t = am_demodulate_xianggan(fs,fc,bw,s_t);
else
r_demod_t = am_demodulate_feixianggan(fs,fc,bw,s_t);
end % 输出信号SNR估计
snr_db_o = sine_snr_est(r_demod_t); end

其中:AM波形生成代码

function [s_t,s_pow] = am_modulate(N,fs,fm,Am,yita,fc,Ac)
% 根据参数产生AM信号
% 输入: N - 产生的信号长度
% fs - 仿真采样率
% fm - 调制信号频率
% Am - 调制信号幅度
% yita - 调幅系数
% fc - 载波频率
% Ac - 载波幅度
% 输出:s_t - 已调信号
% s_pow - 已调信号功率 % 时间t,作为横坐标
t = (0:N-1)'/fs;
% 产生调制信号
m_t = Am * sin(2*pi*fm*t);
% 产生载波信号
c_t = Ac * cos(2*pi*fc*t);
% 调制
A0 = Am / yita;
s_t = (m_t + A0) .* c_t; s_pow = sum(s_t.^2)/N; end

相干解调:

function r_demod_t = am_demodulate_xianggan(fs,fc,bw,s_t)
% AM信号解调,相干
% 输入: fs - 仿真采样率
% fc - 载波频率
% bw - 基带带宽
% s_t - 已调信号
% 输出: r_demod_t - 解调后的信号 r_t = s_t;
N = length(s_t);
t = (0:N-1)'/fs;
c_t = cos(2*pi*fc*t); % 本地振荡器波形
mix_t = r_t .* c_t; % 混频 % 滤波
b = fir1(20, bw/(fs/2)); % 设计截止频率为fcFIR低通滤波器
filtered_t = filter(b,1,mix_t); % 去除DC分量
r_demod_t = filtered_t - sum(filtered_t)/length(filtered_t); end

非相干解调

function r_demod_t = am_demodulate_feixianggan(fs,fc,bw,s_t)
% AM信号解调,非相干
% 输入: fs - 仿真采样率
% fc - 载波频率
% bw - 基带带宽
% s_t - 已调信号
% 输出: r_demod_t - 解调后的信号 %半波整流
s_t = s_t .* (s_t > 0); % 滤波
b = fir1(80, bw/(fs/2)); % 设计截止频率为fc/2的FIR低通滤波器
filtered_t = filter(b,1,s_t); %去直流
r_demod_t = filtered_t - sum(filtered_t)/length(filtered_t); end

调用方法:

% 对AM接收机进行性能评估
clc,clear; % 输入SNR从-5dB变化到25dB
snr_db_i = -5:1:25;
snr_db_o = zeros(1,length(snr_db_i)); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = am_receiver(snr,1);
end % 绘制图形
figure;
plot(snr_db_i,snr_db_o);
title('AM 相干解调器的“解调输出SNR(So/No) - 输入SNR(Si/Ni)”曲线');
xlabel('输入SNR(Si/Ni)');
ylabel('输出SNR(So/No)'); % 输入SNR从-5dB变化到25dB
snr_db_i = -5:1:25;
snr_db_o = zeros(1,length(snr_db_i)); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = am_receiver(snr,2);
end % 绘制图形
figure;
plot(snr_db_i,snr_db_o);
title('AM非相干解调器的“解调输出SNR(So/No) - 输入SNR(Si/Ni)”曲线');
xlabel('输入SNR(Si/Ni)');
ylabel('输出SNR(So/No)');

FM性能分析:

function snr_db_o = fm_receiver(snr_db_i,mf)
% 根据输入信噪比snr_db_i,通过仿真确定AM解调器输出信噪比 % 仿真参数
fs = 20e3;
N = 1000000; % 载波参数
fc = 2e3;
Ac = 1; % 调制信号参数
Am = 1;
bw = 300;
fm = bw/2; % 产生调制信号
[s_t,s_pow] = fm_modulate(N,fs,fm,Am,mf,fc,Ac); % 加入噪声
n_pow = s_pow/(10^(snr_db_i/10));
n_t = bandlimit_noise(N,fs,fc,bw,n_pow);
s_t = s_t + n_t; % 解调
r_demod_t = demod(s_t,fc,fs,'fm'); % 输出信号SNR估计
snr_db_o = sine_snr_est(r_demod_t); end

其中,FM波形生成代码

function [s_t,s_pow] = fm_modulate(N,fs,fm,Am,mf,fc,Ac)
% 根据参数产生FM信号
% fm 调制信号频率(Hz)
% Am 调制信号幅度
% fc 载波频率(Hz)
% Ac 载波幅度
% mf 调频指数
% N 数据点数
% fs 采样频率 kf = mf * 2 * pi * fm / Am; t = (0:N-1)'/fs; % 时间t
m_t = Am*sin(2*pi*fm*t); % 调制信号
phi_t = kf*cumsum(m_t)/fs; % 相位积分
s_t = cos(2*pi*fc*t + phi_t); % 已调信号 s_pow = sum(s_t.^2) / N;%功率计算 end

使用方法:

% 对FM接收机进行性能评估
clc,clear; % 输入SNR从-5dB变化到25dB
snr_db_i = 5:1:20;
snr_db_o = zeros(1,length(snr_db_i)); figure;
hold on; for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = fm_receiver(snr,0.5);
end % 绘制图形
plot(snr_db_i,snr_db_o,'r'); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = fm_receiver(snr,1);
end % 绘制图形
plot(snr_db_i,snr_db_o,'g'); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = fm_receiver(snr,2);
end % 绘制图形
plot(snr_db_i,snr_db_o,'b'); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = fm_receiver(snr,5);
end % 绘制图形
plot(snr_db_i,snr_db_o,'k'); for k = 1:length(snr_db_i)
snr = snr_db_i(k);
snr_db_o(k) = fm_receiver(snr,7);
end % 绘制图形
plot(snr_db_i,snr_db_o,'y'); legend('mf=0.5','mf=1','mf=2','mf=5','mf=7');
title('FM 相干解调器的“解调输出SNR(So/No) - 输入SNR(Si/Ni)”曲线');
xlabel('输入SNR(Si/Ni)');
ylabel('输出SNR(So/No)');

通信原理实践(四)——模拟通信系统性能分析的更多相关文章

  1. 通信原理实践(五)——2PSK 与2DPSK 通信系统

    一.一些Matlab函数 二.2PSK调制解调,性能分析 1.2PSK调制 (1)图示 (2)Matlab代码 function [ s_t ,bb_t,bits] = psk2_module( nS ...

  2. 通信原理实践(二)——幅度调制

    一.幅度调制,并画出时域和频域波形 1.代码如下: function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma ) %UNTITLED 此处显示有关此函数的摘要 % ...

  3. 通信原理实践(一)——音频信号处理

    一.信号的离散化 1.采样定理: –如果信号是带限的,并且采样频率fs超过信号最高频率的两倍,那么,原来的连续信号可以从采样样本中完全重建出来. 因此在仿真过程中,采样率(fs)是一个非常重要的参数. ...

  4. 通信原理实践(六)——基带传输

    一.基带传输引入 1.从数字带通传输说起 以上系统可以等价为: 这里"等价"的假设条件是 •信号通过滤波器不失真 •不存在码间串扰 意义:可以通过评估基带传输系统来获得数字带通传输 ...

  5. 通信原理实践(三)——FM调制

    一.FM调制 1.代码如下: clc,clear; fm = ; % 调制信号频率(Hz) Am = 0.5; % 调制信号幅度 fc = 5e3; % 载波频率(Hz) Ac = ; % 载波幅度 ...

  6. WebSocket原理与实践(四)--生成数据帧

    WebSocket原理与实践(四)--生成数据帧 从服务器发往客户端的数据也是同样的数据帧,但是从服务器发送到客户端的数据帧不需要掩码的.我们自己需要去生成数据帧,解析数据帧的时候我们需要分片. 消息 ...

  7. JMeter—系统性能分析思路(十三)

    参考<全栈性能测试修炼宝典JMeter实战>第九章 性能监控诊断 第二节 系统性能分析思路和第三节 定位分析 系统在工作负载中的性能受到许多因素影响,处理器速度.内存容量.网络或磁盘I/O ...

  8. 基于web的IM软件通信原理分析

    关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而 ...

  9. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

随机推荐

  1. python模块介绍- collections(5)-OrderedDict 有序字典

    1.3.5 OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序. import collections print 'Regular dictionary ...

  2. offset求结构体成员的偏移量

    [代码]  C++ Code  12345678910111213141516171819202122232425262728293031   /* version: 1.0 author: hell ...

  3. javascript 搜索并高亮显示

    2015年12月22日 15:45:08 星期二 情景: 用来筛选列表中的数据, 由于单条数据很简短, 没有用php+mysql去实现筛选功能, 只用javascript进行筛选, 匹配的高亮, 或者 ...

  4. SQL Server 无法在服务器上访问指定的路径或文件解决方法

    SQL Server 无法在服务器上访问指定的路径或文件解决方法 在SQL Server附加数据库或备份数据库时出现:无法在服务器上访问指定的路径或文件. 请确保您具有必需的安全权限且该路径或文件存在 ...

  5. 重写Equals为什么要同时重写GetHashCode

    .NET程序员都知道,如果我们重写一个类的Equals方法而没有重写GetHashCode,则VS会提示警告 :“***”重写 Object.Equals(object o)但不重写 Object.G ...

  6. “无法更新EntitySet“*****”,因为它有一个DefiningQuery,而元素中没有支持当前操作的元素”问题的解决方法

    百思不得其解,最后发现 1:实体中的表必须有主键(数据库中的表必须有主键),如果没有,会有这样的提示 2:主键设置好后,运行还是会出现类似问题,那就一个郁闷 1):方法一:先从EF中删除刚设置主键的模 ...

  7. Oracle dbms_lock.sleep()存储过程使用技巧-场景-分析-实例

    <Oracle dbms_lock.sleep()存储过程使用技巧>-场景-分析-实例 摘要:今天是2014年3月10日,北京,雾霾,下午组织相关部门开会.会议的结尾一名开发工程师找到了我 ...

  8. 解决Fragment在Viepager中切换不保存状态的问题

    在FragmentPagerAdapter中重写以下方法: @Override public Object instantiateItem(ViewGroup container, int posit ...

  9. Hibernate中一对多和多对一关系

    1.单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系 部门--人员 使用人员时如果只需要获取对应部门信息(user.getdept ...

  10. 二、JavaScript语言--事件处理--DOM事件探秘

    第一章 事件流 事件:是文档或浏览器窗口中发生的.特定的交互瞬间.JavaScript和HTML之间的交互都是通过事件来实现的. 事件流:描述的是从页面中接受事件的顺序 IE:事件冒泡流 Netsca ...