码迷,mamicode.com
首页 > 其他好文 > 详细

通信原理实践(四)——模拟通信系统性能分析

时间:2015-11-04 09:18:36      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

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

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));

通信原理实践(四)——模拟通信系统性能分析

标签:

原文地址:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4934960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!