• 大小: 1KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-09-30
  • 语言: Matlab
  • 标签: 通信原理  matlab  

资源简介

此matlab程序给出了信号的FM(调频调制)调制与解调的过程,并分析比较了在不同信噪比条件下,解调的性能

资源截图

代码片段和文件信息

clc;
close all;
clear all;
%% 20181120
% by吕冬治
% 信号的FM调制与解调
%% 信号参数
fm = 3;    
fc = 10;    
fs = 200;    
Am = 1;       
A = 2;        
N = 1e3;      
K = N-1;
n = 0:K;
f = n*fs/N;   
t = 0:1/fs:K/fs;        
wm = 2*pi*fm; 
wc = 2*pi*fc; 
thm = 0;       
thc = 0;
B = 2*fm;
KFM = 10;
beatFM = KFM*Am/wc;
ct = A*cos(wc*t);%   
fft_ct= abs(fft(ct));
figure(1)
subplot(211);
plot(tct);
xlabel(‘时间/s‘);
ylabel(‘幅值‘);
grid on; 
title(‘频率为10Hz的载波信号byLDM‘);
subplot(212);
plot(f(1:N/2)fft_ct(1:N/2));
xlabel(‘频率/Hz‘);
ylabel(‘幅值‘);
grid on; 
title(‘载波信号信号频谱‘);

%% 调制FM
sig_fm = A*cos(wc*t+beatFM*sin(wm*t));
fft_sig_fm = abs(fft(sig_fm));
figure(2)
subplot(211);
plot(tsig_fm);
xlabel(‘时间/s‘);
ylabel(‘幅值‘);
grid on; 
title(‘调制信号FM‘);
subplot(212);
plot(f(1:N/2)fft_sig_fm(1:N/2));
xlabel(‘频率/Hz‘);
ylabel(‘幅值‘);
grid on; 
title(‘调制信号频谱‘);
%% 加噪声
sig_noise_fm = awgn(sig_fm40);     % 添加信噪比为6dB的高斯白噪声
fft_sig_noise_fm = abs(fft(sig_noise_fm));         % 对AM解调信号进行傅里叶变换  
sig_noise_fm2 = awgn(sig_fm20);     % 添加信噪比为15dB的高斯白噪声
fft_sig_noise_fm2 = abs(fft(sig_noise_fm));         % 对AM解调信号进行傅里叶变换  
figure(3)
subplot(211);
plot(tsig_noise_fm);
xlabel(‘时间/s‘);
ylabel(‘幅值‘);
grid on; 
title(‘添加信噪比为40dB噪声后的FM信号byLDM‘);
subplot(212);
plot(f(1:N/2)fft_sig_noise_fm(1:N/2));
xlabel(‘频率/Hz‘);
ylabel(‘幅值‘);
grid;
title(‘添加信噪比为40dB噪声后的FM信号频谱‘);

figure(4)
subplot(211);
plot(tsig_noise_fm2);
xlabel(‘时间/s‘);
ylabel(‘幅值‘);
grid on; 
title(‘添加信噪比为20dB噪声后的FM信号byLDM‘);
subplot(212);
plot(f(1:N/2)fft_sig_noise_fm2(1:N/2));
xlabel(‘频率/Hz‘);
ylabel(‘幅值‘);
grid;
title(‘添加信噪比为20dB噪声后的FM信号频谱‘);
%% 解调
% 无噪声
diff_sig_fm = diff(sig_fm);         % 调频信号经过一个微分器
d_m = abs(hilbert(diff_sig_fm));    % 用希尔伯特变换能够实现包络检波
fft_dm = abs(fft(d_m));           % 对AM解调信号进行傅里叶变换  
% 3 dB高斯白噪声
diff_sig_fm1 = diff(sig_noise_fm);         % 调频信号经过一个微分器
d_m2 = abs(hilbert(diff_sig_fm1));    % 用希尔伯特变换能够实现包络检波
fft_dm2 = abs(fft(d_m2));           % 对AM解调信号进行傅里叶变换  
% 20 dB高斯白噪声
diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
d_m3 = abs(hilbert(diff_sig_fm2));    % 用希尔伯特变换能够实现包络检波
fft_dm3 = abs(fft(d_m3));           % 对AM解调信号进行傅里叶变换  
% diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
% d_m3 = abs(hilbert(diff_sig_fm2));    % 用希尔伯特变换能够实现包络检波
% fft_dm3 = abs(fft(d_m3));           % 对AM解调信号进行傅里叶变换  
% diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
% d_m3 = abs(hilbert(diff_sig_fm2));    % 用希尔伯特变换能够实现包络检波
% fft_dm3 = abs(fft(d_m3));           % 对AM解调信号进行傅里叶变换  
% diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
% d_m3 = abs(hilbert(diff_sig_fm2));    % 用希尔伯特变换能够实现包络检波
% fft_dm3 = abs(fft(d_m3));           % 对AM解调信号进行傅里叶变换  
% diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
% d_m3 = abs(hilbert(diff_sig_fm2));    % 用希尔伯特变换能够实现包络检波
% fft_dm3 = abs(fft(d_m3));           % 对AM解调信号进行傅里叶变换  
% diff_sig_fm2 = diff(sig_noise_fm2);         % 调频信号经过一个微分器
% d

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5429  2018-11-25 16:34  FM.m

----------- ---------  ---------- -----  ----

                 5429                    1


评论

共有 条评论