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

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

时间:2015-10-17 09:27:59      阅读:439      评论:0      收藏:0      [点我收藏+]

标签:

一、幅度调制,并画出时域和频域波形

1、代码如下:

function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma )
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
% N = 3000; % 长度
% fs = 48e3; % 采样率
% fm = 300; % 调制信号频率
% Am = 0.5; % 调制信号幅度
% fc = 8e3; % 载波频率
% Ac = 1; % 载波幅度
% A0      %直流分量

A0 = Am / Ma;

%%
%时域波形,第一小题
t = (0:N-1)/fs; % 时间t
m_t = Am*sin(2*pi*fm*t); % 产生调制信号
c_t = Ac*cos(2*pi*fc*t); % 产生载波信号
s_t = (m_t + A0) .* c_t; % 调制

figure()
subplot(1,3,1);
plot(t, s_t , b); % 绘波形
xlabel(time);
ylabel(amplitude);
title(时域波形);

%%
%绘制功率谱,第二小题
L = length(s_t);               % 取得序列长度
u = fftshift(fft(s_t ));       % 离散傅里叶变换,求频谱
u_pow = pow2db(abs(u).^2);     % 幅度转为dB
w = (0:L-1)*fs/L - 1/2*fs;    % 横坐标-频率

subplot(1,3,2);
plot(w, u_pow);
grid on;
xlabel(frequency(Hz));
ylabel(magnitude(dB));
title(功率谱);

 

2、结果分析

    由于已经封装成一个函数,按照函数说明进行参数设置即可完成幅度调制的功能。波形图如下:

AM_func(3000,48e3,300,0.5,8e3,1,0.3)

技术分享

 

二、频率谱分析——计算AM调制效率

1、代码展示:

    代码需要放在上面代码的后面,或者基于上者的数据

u_pow_decsend = sort( abs(u),descend);
p_all = sum( abs(u).^2 );
p_main = p_all - max(abs(u)).^2 * 2;
p_n = p_main / p_all * 100;

2、结果分析:

   一般来说AM调制最大调制效率为33%,且是在Ma=1的情况下取得。

 

三、非相干解调——包络检波

1、代码展示

    代码需要放在上面代码的后面,或者基于上者的数据

b = fir1(80, 2000/(fs/2));               % 设计截止频率为2KHz的FIR低通滤波器,如何截止频率设为300,则无法显示600Hz的波形,即可以检验出过调制的波形
s_t = s_t .* (s_t > 0);
filtered_t = filter(b,1,s_t);        % 滤波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);

subplot(1,3,3);
plot(t, demod_t , b); % 绘制解调波形
xlabel(time);
ylabel(amplitude);
title(包络检波之后的波形);

2、结果分析

    这边的滤波器需要设计好,两个参数的后者的范围是0~1,表示频率对于fs/2的归一化频率。

技术分享

 

四、相干解调

1、代码展示

    已封装成函数,可直接调用

function [] = jt_func( N,fs,fm,Am,fc,Ac,Ma,fc_c,phi_c )
%UNTITLED5 此处显示有关此函数的摘要
%   此处显示详细说明
% %发送端参数声明
% N = 3000; % 长度
% fs = 48e3; % 采样率
% fm = 300; % 调制信号频率
% Am = 0.5; % 调制信号幅度
% fc = 8e3; % 载波频率 
% Ac = 1; % 载波幅度
% Ma = 10;

% 
% %接收端参数声明
% fc_c = 8e3;  % 本地振荡器频率
% phi_c = 0;   % 本地振荡器初相

%%
%发送端产生波形
A0 = Am / Ma;
t = (0:N-1)/fs; % 时间t
m_t = Am*sin(2*pi*fm*t); % 产生调制信号
c_t = Ac*cos(2*pi*fc*t); % 产生载波信号
s_t = (m_t + A0) .* c_t; % 调制

%%
%接收端解调波形
r_t = s_t;
figure()
subplot(1,3,1);
plot(t, r_t , b); % 绘波形
xlabel(time);
ylabel(amplitude);
title(时域波形);

c_t = cos(2*pi*fc_c*t+phi_c); % 本地振荡器波形
mix_t = r_t .* c_t; % 混频
subplot(1,3,2);
plot(t, mix_t , b);   % 绘制混频波形
xlabel(time);
ylabel(amplitude);
title(混频后的波形);

b = fir1(20, fc/(fs/2)); % 设计截止频率为fcFIR低通滤波器
filtered_t = filter(b,1,mix_t); % 滤波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
subplot(1,3,3);
plot(t, demod_t ,b ); % 绘制解调波形
xlabel(time);
ylabel(amplitude);
title(滤波后的波形);

end

 

2、结果分析

技术分享

 

五、模拟幅度调制、解调过程——音频

1、代码如下:

    主要是播放声音这个函数使用audioplayer,可以停止声音播放,否则。。。。。

clc,clear;

[m_t,fs] = audioread(MayDay.mp3);   % 得到音频信号以及采样率

N = length(m_t);                      % 调制信号长度
Am = max(m_t);                        % 音频信号最大幅度
fc = 200e3;                           % 载波频率
Ac = 1;                               % 载波幅度
Ma = 0.3; 
A0 = Am / Ma;

t = (0:N-1)/fs; % 时间t
c_t = Ac*cos( 2*pi*fc*t ); % 产生载波信号
s_t = (m_t + A0) .* c_t; % 调制

r_t = s_t;
figure()
subplot(1,3,1);
plot(t, r_t , b); % 绘波形
xlabel(time);
ylabel(amplitude);
title(时域波形);

c_t = cos(2*pi*fc*t); % 本地振荡器波形
mix_t = r_t .* c_t; % 混频
subplot(1,3,2);
plot(t, mix_t , b);   % 绘制混频波形
xlabel(time);
ylabel(amplitude);
title(混频后的波形);

b = fir1(20,fs/4/(fs/2)); % 设计截止频率为fcFIR低通滤波器
filtered_t = filter(b,1,mix_t); % 滤波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
subplot(1,3,3);
plot(t, demod_t ,b ); % 绘制解调波形
xlabel(time);
ylabel(amplitude);
title(滤波后的波形);

player = audioplayer(demod_t, fs);
play(player);

 

2、结果展示:

技术分享

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

标签:

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

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