通信原理实践(二)——幅度调制
一、幅度调制,并画出时域和频域波形
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.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...
随机推荐
- IDEA 编译时报错 “未结束的字符串文字” “解析时已经达到文件结尾”
Information:Using javac 1.7.0_75 to compile java sourcesInformation:java: Errors occurred while comp ...
- Delphi中Format与FormatDateTime函数详解
copy:http://hi.baidu.com/yunfanleo/blog/item/0c51d9cdbc0531550eb34558.html Format是一个很常用,却又似乎很烦的方法,本人 ...
- Xcode 6.3.2 提交APP(Upload Archive)时崩溃的解决办法
最近在上传为客户做的APP时,发现Xcode总会在进行到Upload Archive这一步时崩溃,导致APP上载不了.下面说说网上搜索到的几种解决办法. 方法一 亲测有效,很简单: 1.重新打开Xco ...
- C#字符串的四舍五入
Round(Decimal) Round(Double) Round(Decimal, Int32) Round(Decimal, MidpointRounding) Round(Double, In ...
- java实现批量上传(swfupload)
下载 swfupload 文件夹 里面包含handlers.js,swfupload.js,swfupload.swf 三个文件. 我的是和ssh项目整合在一起的.因为struts2的拦截器会拦截所有 ...
- yii抛出错误页面CHttpException
public void __construct(integer $status, string $message=NULL, integer $code=0) $status integer HTTP ...
- GridView中使用分页控件
前台:导入<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix= ...
- August 28th 2016 Week 36th Sunday
What doesn't kill you makes you stronger. 那些没有彻底击败你的东西只会让你更强大. Where there is life, there is hope, a ...
- python基础——偏函数
python基础——偏函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函 ...
- Git的一些实用操作
Ref:http://stackoverflow.com/questions/17195861/undo-git-update-index-assume-unchanged-file 1. 添加本地忽 ...