通信原理实践(二)——幅度调制
一、幅度调制,并画出时域和频域波形
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、结果展示:

通信原理实践(二)——幅度调制的更多相关文章
- 通信原理实践(三)——FM调制
一.FM调制 1.代码如下: clc,clear; fm = ; % 调制信号频率(Hz) Am = 0.5; % 调制信号幅度 fc = 5e3; % 载波频率(Hz) Ac = ; % 载波幅度 ...
- 通信原理实践(五)——2PSK 与2DPSK 通信系统
一.一些Matlab函数 二.2PSK调制解调,性能分析 1.2PSK调制 (1)图示 (2)Matlab代码 function [ s_t ,bb_t,bits] = psk2_module( nS ...
- 通信原理实践(四)——模拟通信系统性能分析
一.模拟通信系统性能分析 1.系统框图 2.信噪比定义 (1)输入信噪比: (2)输出信噪比: (3)调制制度增益: 3.模拟通信系统分析等价模型 即自己产生一个高斯白噪声,加入到调制信号,然后在送入 ...
- 通信原理实践(一)——音频信号处理
一.信号的离散化 1.采样定理: –如果信号是带限的,并且采样频率fs超过信号最高频率的两倍,那么,原来的连续信号可以从采样样本中完全重建出来. 因此在仿真过程中,采样率(fs)是一个非常重要的参数. ...
- 通信原理实践(六)——基带传输
一.基带传输引入 1.从数字带通传输说起 以上系统可以等价为: 这里"等价"的假设条件是 •信号通过滤波器不失真 •不存在码间串扰 意义:可以通过评估基带传输系统来获得数字带通传输 ...
- WebSocket原理与实践(二)---WebSocket协议
WebSocket原理与实践(二)---WebSocket协议 WebSocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信问题而设计的.协议定义ws和wss协议,分别为普通请求和基 ...
- Linux及安全实践二
Linux及安全实践二 基本内核模块 20135238 龚睿 1. 理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个 ...
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)
转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
随机推荐
- NSIS脚本入门和进阶方法
NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.对于新手来说,它有 ...
- Java对象排序
java实现对象比较,可以实现java.lang.Comparable或java.util.Comparator接口 //Product.java import java.util.Date; //p ...
- MySQL表中数据的迁移
INSERT INTO `crm_attachment`(OPERATOR_ID,ATTACHMENT_ID,TYPE ) SELECT APPLICATION_ID ,ATTACHMENT_ID,' ...
- 使用Servlet和jdbc创建用户登录验证
首先创建一个用户表,用来保存用户名 密码,并插入几条数据 mysql> desc user;+----------+-------------+------+-----+---------+-- ...
- ACM/ICPC 之 SPFA-兑换货币(POJ1860)
//水题-SPFA解法 //套汇是指兑换货币后能使本金上升 //给定本金货币编号,货币间的汇率和手续费,求能否套汇成功 //Time:16Ms Memory:200K #include<iost ...
- SqlDateTime 溢出。
SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间 解决方法:不要怀疑自己的判断就是数据库字段里的datatime ...
- 记录linux系统用户shell终端操作记录
在 /etc/profile 最后添加 export HISTTIMEFORMAT='[%F %T]: ' export PROMPT_COMMAND='{ msg=$(history 1 | { r ...
- bootstrap添加时间控件
$('#startTime').daterangepicker({ singleDatePicker: true,format:"YYYY-MM-DD HH:mm:ss",time ...
- 使用charles 抓取手机上的操作
Charles上的设置要截取iPhone上的网络请求,我们首先需要将Charles的代理功能打开.在Charles的菜单栏上选择“Proxy”->“Proxy Settings”,填入代理端口8 ...
- MongoDB C API
一.编译mongodb c driver: 编译完成之后在c:\mongo-c-driver目录下有bin.include.lib三个文件夹,分别包含所需的dll..h文件.lib. 在自己的项目中引 ...