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

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、结果展示:

通信原理实践(二)——幅度调制的更多相关文章

  1. 通信原理实践(三)——FM调制

    一.FM调制 1.代码如下: clc,clear; fm = ; % 调制信号频率(Hz) Am = 0.5; % 调制信号幅度 fc = 5e3; % 载波频率(Hz) Ac = ; % 载波幅度 ...

  2. 通信原理实践(五)——2PSK 与2DPSK 通信系统

    一.一些Matlab函数 二.2PSK调制解调,性能分析 1.2PSK调制 (1)图示 (2)Matlab代码 function [ s_t ,bb_t,bits] = psk2_module( nS ...

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

    一.模拟通信系统性能分析 1.系统框图 2.信噪比定义 (1)输入信噪比: (2)输出信噪比: (3)调制制度增益: 3.模拟通信系统分析等价模型 即自己产生一个高斯白噪声,加入到调制信号,然后在送入 ...

  4. 通信原理实践(一)——音频信号处理

    一.信号的离散化 1.采样定理: –如果信号是带限的,并且采样频率fs超过信号最高频率的两倍,那么,原来的连续信号可以从采样样本中完全重建出来. 因此在仿真过程中,采样率(fs)是一个非常重要的参数. ...

  5. 通信原理实践(六)——基带传输

    一.基带传输引入 1.从数字带通传输说起 以上系统可以等价为: 这里"等价"的假设条件是 •信号通过滤波器不失真 •不存在码间串扰 意义:可以通过评估基带传输系统来获得数字带通传输 ...

  6. WebSocket原理与实践(二)---WebSocket协议

    WebSocket原理与实践(二)---WebSocket协议 WebSocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信问题而设计的.协议定义ws和wss协议,分别为普通请求和基 ...

  7. Linux及安全实践二

    Linux及安全实践二   基本内核模块 20135238 龚睿 1.  理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个 ...

  8. Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

    ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  9. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

随机推荐

  1. 使用Java数组实现双色球选号

    package com.hm.test; import java.util.Random; /** * 模拟双色球生成 * *1.从1到16中产生一个篮球的随机数 *2.从1到33中产生出6个红色的球 ...

  2. Unity3d UGUI序列帧动画

    代码 using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine. ...

  3. ios 音乐播放,音乐信息显示方法

    下面的博客写的很清楚了 http://msching.github.io/blog/page/2/ 主要涉及AVAudioPlayer和下面这几个函数 MPNowPlayingInfoCenter.d ...

  4. ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)

    四道MST,适合Prim解法,也可以作为MST练习题. 题意包括在代码中. POJ1258-Agri Net 水题 //Prim-没什么好说的 //接受一个邻接矩阵,求MST //Time:0Ms M ...

  5. percona-toolkit 之 【pt-summary】、【pt-mysql-summary】、【pt-config-diff】、【pt-variable-advisor】说明

    摘要: 通过下面的这些命令在接触到新的数据库服务器的时候能更好更快的了解服务器和数据库的状况. 1:pt-summary:查看系统摘要报告 执行: pt-summary 打印出来的信息包括:CPU.内 ...

  6. ffmpeg-20160522-git-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  7. ASM:《X86汇编语言-从实模式到保护模式》第11章:进入保护模式

    ★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT)        32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的 ...

  8. HTML超链接

    打开网页在 想要查看的位置右键单击   审查元素  则可以查看代码    点击图片右键单独打开  则可以查看图片位置 一.超链接 a标签   <a href="地址"> ...

  9. C# 总复习

    1.循环语句 四要素:初始条件.循环条件.循环体.状态改变 循环的最后一句:循环条件不再满足 2. ++     --int a = 5; //在赋值语句中,后++需要,先进性赋值,然后进行+1运算 ...

  10. php中文转换编码函数

    $filename= $list->filename; // 获取文件名字 if(preg_match("/[\x80-\xff]/",$filename)){ // 如果是 ...