题目分析

调制解调通信系统实现。

录制一段语音信号,对其进行幅度调制解调,对比两端语音信号的频谱,并播放看其是否有偏差。在此基础上,将调制后的语音信号加上一个噪声,再滤波,观察恢复语音信号的失真现象。

需要完成以下任务:

  • 采集一段语音信号
  • 做原信号时域频域图
  • 对语音信号进行幅度调制
  • 做出解调后的频谱
  • 调制解调前后做对比
  • 调制后加噪声
  • 解调观察对比

实验流程

原信号分析

本次实验从网络下载WAV格式的音频信号并将其长度裁剪为5s方便处理。

点击下载

一般音乐和语音信号都是双声道信号,时域和频谱图会有两个颜色,所以要取单列来分析,通过x1=x(:,1)语句来实现。

首先利用audioread函数读取音频文件获得其频率等信息。

然后利用fft函数求傅里叶变换然后利用abs函数求幅值画幅度谱,再用plot画出频谱图。为了方便观察,可以利用fftshift对其进行左右互换,实验预留了一个接口is_shift当其值为1时整个实验的图像都采用fftshift变换,反之不做,方便灵活选择。

最终做出时域和频域的两个图形。

以上画了频谱图,可以更直观的看到信号的特征,包括截止频率和音频范围,音频信号主要集中在低频段。

幅度调制

这里统一使用了频率归一化,便于从原信号中读取截止频率和设置载波频率。

取一定频率的载波对信号进行AM调制,变量am_f表示载波信号的频率,经过反复调参,认为取0.6最为合适。这里取了0.6pi为调制载波频率,与原信号相乘实现AM调制,这里用点乘转置矩阵实现。

从图中可以看出原音乐信号的截止频率为0.2pi(图片对称轴减一),这里设置了0.6pi对信号进行AM调制,原信号的调制相当于频谱搬移,左移一个右移一个,调制的目的是便于信号在信道中传输。当调制频率较高时,声音响度低,几乎只能听见兹兹的声音,信号几乎完全失真,当调制频率较低时,声音很尖锐,响度较大,能听出调子,但也有兹兹的声音。

解调

  • 首先对调制后的信号进行解调:将调制后的信号与调制时相同的载波相乘实现解调,这里用点乘转置矩阵实现。

  • 然后用巴特沃斯滤波器对解调信号进行滤波:首先求巴特沃斯滤波器的频率响应,其中用到了buttord求满足性能指标的滤波器阶数N和3dB截止频率wc、用butter计算模拟滤波器的传输函数Ha(s)、用freqz求频响。然后用filter实现滤波。
  • 最后播放调制、解调和滤波后的声音:通过声音变化感受调制、解调和滤波。

首先得到了解调后的时域波形和频谱图,可以看出解调后的信号并没有完全恢复原信号,会夹杂一点调制过程中的载波,通过滤波后信号频谱有了很大改善。播放声音发现:巴特沃斯滤波后声音清晰,基本和原来的音乐差不多,但是音乐稍微低沉。巴特沃斯滤波器的特点是通频带的频率响应曲线平滑。

加噪

  • 信号加随机白噪声:首先求得随机白噪声,幅值为0.05,用randn语句产生噪声,然后将噪声和之前求得的原信号调制后的信号叠加。
  • 滤掉噪声:我使用了巴特沃斯滤波器来滤噪,其中用到buttord求满足性能指标的滤波器阶数N和3dB截止频率wc、用butter求s域的频率响应的参数、用bilinear函数即利用双线性变换实现频率响应s域到z域的变换,然后用filter求滤波后信号。

从图中可以看到随机噪声的频谱图以及信号随机噪声后的时域波形和频谱,通过播放感受到了噪声对信号的影响;
滤波之后对噪声的改善很大,噪声变小,原声音更加清晰,只是巴特沃斯滤波会把一部分原信号频率滤掉,声音会有点低沉。

附:实验代码

clear;clc;close all;
[x,fs] = audioread('water.wav');%读取音乐信号%输出频率
fprintf('fs1: %i \n',fs )
%音乐语音信号分声道处理
x_l=x(:,1);
n1=length(x_l);
t1=(0:(n1-1))/fs;%length取数列长度即元素个数is_shift=1; % 预留接口,下面用来判断频谱是否使用fftshift%=======================原音频时域/频域图=================================%
figure('NumberTitle', 'off', 'Name', '原音频时域/频域波形图');
%画音乐信号时域图
subplot(2,1,1);plot(t1,x_l);
axis([0,5,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('音乐时域波形');%画音乐信号频域图
x_l_fft=fft(x_l,n1);
if is_shift==1 x_l_fft=fftshift(x_l_fft);end;
f1=0:fs/n1:fs*(n1-1)/n1;subplot(2,1,2);plot(f1,abs(x_l_fft));
axis([0,fs,0,200]);xlabel('频率f');ylabel('幅度');title('音乐信号频谱');%============================AM调制=======================================%n=0:n1-1;%所有元素
w=2*f1/fs;%归一化
am_f=0.6;%调制载波频率%调制
x_cos=cos(n*am_f*pi);%时余弦信号
x_am=x_l.*x_cos';%调制信号
x_cos_fft=fft(x_cos);
x_am_fft=fft(x_am);
if is_shift==1 x_am_fft=fftshift(x_am_fft);end;%画出载波和调制信号波形
figure('NumberTitle', 'off', 'Name', 'AM调制图');
subplot(2,2,1);plot(t1,x_cos);
axis([0,0.005,-1,1]);title('余弦信号时域波形');xlabel('时间t');ylabel('幅度');subplot(2,2,2);plot(w,abs(x_cos_fft));
title('余弦信号频谱');xlabel('w');ylabel('幅度');
subplot(2,2,3);plot(t1,x_am);
axis([0,5,-0.5,0.5]);title('调制信号时域波形');xlabel('时间t');ylabel('幅度');subplot(2,2,4);plot(w,abs(x_am_fft));
title('调制信号频谱');xlabel('w');ylabel('幅度');%播放调制信号
%sound(x_l,fs);pause(5);%播放原音乐
%sound(x_am,fs);pause(5);%低频调制播放%============================解调========================================%x_am_r=x_am.*x_cos'; %解调信号
x_am_r_fft=fft(x_am_r); %傅里叶变换
if is_shift==1 x_am_r_fft=fftshift(x_am_r_fft);end;%画解调信号时域波形和频谱
figure('NumberTitle', 'off', 'Name', '解调时域/频域波形图');
subplot(2,1,1);plot(t1,x_am_r);
axis([0,5,-0.5,0.5]);xlabel('时间t');ylabel('幅度');title('解调信号时域波形');subplot(2,1,2);plot(w,abs(x_am_r_fft));
xlabel('w');ylabel('幅度');title('解调信号频谱');%巴特沃斯低通滤波器过滤信号,wp<ws为低通滤波器
wp=am_f;%设置通带频率
ws=am_f*1.1; %设置阻带频率
rp=1;%设置通带波纹系数
rs=50; %设置阻带波纹系数    [N,wc]=buttord(wp,ws,rp,rs); %求满足性能指标的滤波器阶数N和3dB截止频率wc
[b,a]=butter(N,wc); %计算模拟滤波器的传输函数Ha(s)
[Hd,Ww]=freqz(b,a);%求频响figure('NumberTitle', 'off', 'Name', '解调后滤波图');
subplot(3,1,1);plot(Ww/pi,abs(Hd));
axis([0,1,0,1.5]);xlabel('w/π');ylabel('幅度');title('巴特沃斯频率响应曲线');%求巴特沃斯滤波器滤波信号
x_am_r_f=filter(b,a,x_am_r);%滤波后的音乐信号
x_am_r_f=x_am_r_f*2;N3=length(x_am_r_f);
t1=(0:(N3-1))/fs;%时间
f1=0:fs/N3:fs*(N3-1)/N3;%频率
w1=2*f1/fs;%归一化
x_am_r_f_fft=fft(x_am_r_f);%傅里叶变换
if is_shift==1 x_am_r_f_fft=fftshift(x_am_r_f_fft);end;subplot(3,1,2);plot(t1,x_am_r_f);
axis([0,5,-0.5,0.5]);
xlabel('时间t');ylabel('幅度');title('巴特沃斯滤波信号时域波形');subplot(3,1,3);plot(w1,abs(x_am_r_f_fft));
xlabel('w');ylabel('幅度');title('巴特沃斯滤波信号频谱');%sound(x_l,fs);pause(5);%原声音
%sound(x_am_r_f,fs);pause(5);%解调并用巴特沃斯滤波器滤波后的声音 %============================调制后信号加噪===================================%%加随机白噪声
x_noise=0.05*randn(n1,1);%噪声占比5%
x_noise_fft=fft(x_noise);%噪声傅里叶变换
if is_shift==1 x_noise_fft=fftshift(x_noise_fft);end;%X_noise=x1+x_noise;%对调制后信号加随机噪声
X_noise=x_am+x_noise;%对调制后信号加随机噪声
X_noise_fft=fft(X_noise);%加噪信号傅里叶变换
if is_shift==1 X_noise_fft=fftshift(X_noise_fft);end;figure('NumberTitle', 'off', 'Name', '加噪滤波频谱图');subplot(3,2,1);plot(w,abs(x_noise_fft));
xlabel('w');ylabel('幅度');title('随机白噪声频谱图');subplot(3,2,2);plot(t1,X_noise);
axis([0,5,-0.5,0.5]);
xlabel('时间t');ylabel('幅度');title('加随机噪声信号时域波形');subplot(3,2,3);plot(w,abs(X_noise_fft));
xlabel('w');ylabel('幅度');title('加随机噪声信号频谱图');%=======================含噪信号解调滤波==================================%
%先对含噪调制信号解调
X_noise_r=X_noise.*x_cos'; %解调信号
X_noise_r_fft=fft(X_noise_r); %傅里叶变换
if is_shift==1 X_noise_r_fft=fftshift(X_noise_r_fft);end;%画解调信号时域波形和频谱
subplot(3,2,4);plot(w,abs(X_noise_r_fft));
xlabel('w');ylabel('幅度');title('含噪调制信号解调频谱');%再用巴特沃斯滤波器去噪
noise_w = 0.4;
wp=noise_w;ws=noise_w+0.06;Rp=1;Rs=15;
[n1,Wn1]=buttord(wp,ws,Rp,Rs,'s');%求低通滤波器的阶数和截止频率
[bb1,aa1]=butter(n1,Wn1,'s');%求s域的频率响应的参数
[bb2,aa2]=bilinear(bb1,aa1,1);%利用双线性变换实现频率响应s域到z域的变换
%%subplot(3,2,2);plot(abs(bb2),aa2);
%%xlabel('w/π');ylabel('幅度');title('巴特沃斯频率响应曲线');X_noise_r_f=filter(bb2,aa2,X_noise_r);%求滤随机噪声后的信号
%画滤噪后的图
filter_noisy_fft=fft(X_noise_r_f);
if is_shift==1 filter_noisy_fft=fftshift(filter_noisy_fft);end;subplot(3,2,5);plot(t1,X_noise_r_f);
axis([0,5,-0.5,0.5]);
xlabel('时间t');ylabel('幅度');title('滤随机噪声后信号时域波形');subplot(3,2,6);plot(w,abs(filter_noisy_fft));
xlabel('w');ylabel('幅度');title('滤随机噪声后信号频谱');%播放
%sound(x_l,fs);pause(5);%原音乐
sound(X_noise,fs);pause(5);%加随机噪声
sound(X_noise_r_f,fs);pause(5);%滤随机噪声

调制解调通信系统实现相关推荐

  1. 基于MATLAB的室内可见光调制解调通信系统

    目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1选题背景及意义 1 1.1.1选题背景 1 1.1.2研究意义 1 1.2研究现状 2 1.2.1室内可见光通信的研究现状 2 1. ...

  2. 超详细的8psk调制解调通信系统讲解与仿真

    原文链接:(更多文章移步链接) 贼详细的8PSK调制与解调详细过程 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/47258287 一.关于 1.花了几天写了一个 ...

  3. 基于MATLAB的自适应调制解调通信系统的误码率仿真,对比BPSK,QPSK,16QAM,64QAM

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  4. [转载]无线通信系统中的调制解调基础(一):AM和FM

    原文地址:无线通信系统中的调制解调基础(一):AM和FM作者:逝者如云 第一部分解释了调幅(AM)和调频(FM)的基础,并阐述了优点和缺点.第二部分解析了频移键控(PSK)和正交幅度调制(QAM).第 ...

  5. MATLAB BPSK通信系统调制解调仿真原理及代码(二)

    此仿真是瑞丽衰落信道与高斯信道的仿真对比,高斯信道的原理及仿真代码前文已有讲述. 高斯信道下的原理及代码请见 MATLAB BPSK通信系统调制解调仿真原理及代码(一)_惜洛-Jankin的博客-CS ...

  6. 《信号与系统》解读 第5章 通信系统中的调制解调:频谱搬移、幅度调制、脉冲调制、频率调制、相位调制、频分复用、时分复用

    本文将从时域与频域的角度解读"系统"通过正弦载波信号,对输入的时域基带信号,进行"调制"的过程,并输出调制后的时域混频信号. 解调是调制的反过程,"系 ...

  7. 【混沌加解密调制解调】基于FPGA的混沌自同步混沌数字保密通信系统

    1.软件版本 quartusii12.1 2.本算法理论知识 本系统的基本结构,我们遵循你所提供的结构进行,整个框图如下所示: 各个部分的功能如下: 加密算法模块采用异或运算,它将来自信源编码的二进制 ...

  8. 基于multisim的fm调制解调_矢量调制分析

    本应用指南的第一部分介绍了矢量信号分析(VSA) 的初步知识,并讨论 了矢量信号分析测量的概念和操作理论.该部分还描述了矢量信号分析的频域,通过快速傅立叶变换(FFT) 分析实现的频谱分析测量能力.今 ...

  9. msk误码率 matlab仿真,GMSK调制解调的MATLAB仿真与误码率分析.pdf

    GMSK调制解调的MATLAB仿真与误码率分析 67 第34卷 第2期 <新疆师范大学学报>(自然科学版) Vol.34,No.2 2015年6月 Journal of Xinjiang ...

最新文章

  1. python字符串、元组常用操作
  2. Access和SQL SERVER两种数据库的直接转换,不需要第三方工具
  3. VTK:Filtering之ConstrainedDelaunay2D
  4. git基础用法(一)
  5. MySQL高级 - InnoDB特性
  6. jep使用_JEP 277“增强弃用”非常好。 但这是一个更好的选择
  7. NYOJ 35表达式求值
  8. php mysql 导出到excel,php mysql数据导出到excel文件
  9. 1424 零树 (树形DP)
  10. error: #error This file requires compiler and library support for the ISO C++ 2011 standard.
  11. 关联规则(Apriori、FP-grpwth)
  12. python hist2d_matplotlib可视化之hist直方图
  13. vue 修改标题栏_在Vue中如何实现动态修改页面title
  14. Linux高级存储管理【2】(lvm快照、删除,vdo)
  15. 分区空间分配:window10怎样把C盘空间分一点给D盘?
  16. Excel工具类(详细版)
  17. Android————一个简单的新闻面板
  18. mysql忘记初始密码与更改密码
  19. 如何手工删除oracle数据库和软件
  20. Anders Hejlsberg

热门文章

  1. 转:华为网络工程师离职总结:资质平庸的人该怎么办?震惊了无数人!
  2. 常用的GNOME Shell 扩展
  3. 安卓拨号界面查询*#代码大全(由于最近普通用户爱玩这些黑科技,于是在网上找了些)
  4. 查询各科成绩前3和第3的学生(SQL)
  5. 求一元二次方程的根(C语言)
  6. python pycharm安装pexpect
  7. 搜索引擎的道德底线在哪里?
  8. vue element ui 日历教程以及源码已经整理好
  9. matlab cum4est,matlab高阶谱分析工具箱
  10. Git手写笔记(简单秒懂)详细讲解