1.基本概念
1.1 AM调制原理
调幅就是使载波的振幅随调制信号的变化规律而变化。基带信号m(t)与直流分量A0相加,然后和高频载波相乘实现AM信号的调制,如图1所示。
1.2 AM解调原理
AM信号经过信道传输,引入噪声后,再和载波相乘,经过低通滤波器和隔直流后,输出原始基带信号,如图2所示。
2.MATLAB读取语音文件
准备一段wav的语音文件,我用笔记本自带的录音机录制了一段语音“软件无线电小方圆.wav“,用MATLAB读取该语音文件,并获取采样频率信息。
clc;
clear all;
%% ***************read file*************************************
filename ='./data_source/软件无线电小方圆.wav';
[m,fm]= audioread(filename);% fm = 48e3; %音频的采样率
sound(m,fm);
figure(1);
plot(m);title('原始的语音信号');
我的这段语音数据源采样率48kHz,时域波形如图3所示,
图3 原始语音信号时域波形
3.AM调制相关参数设置和语音数据源初处理
设置载波频率192kHz,载波采样率1.92MHz,AM调制直流分量0.5,代码里类似这些参数大家可以根据自己的需求修改。因为AM调制是用基带信号控制载波的幅值,即与载波信号数据相乘,所以在这之前,我们需要将基带信号的采样率进行处理,使其与载波信号采样率一致,代码如下:
%*****************参数设置***********************
fs = 1.92e6; %采样率 载波的采样率
fc = 192e3; %载波中心频率
am_M = 0.5;%直流偏量
%*****************插值48kHz to 1.92MHz************************
m_len=length(m)*fs/fm;%按照载波采样率的长度计算
m_t=zeros(1,m_len);
for i=1:length(m)
for j=1:fix(fs/fm)
m_t((i-1)*fix(fs/fm)+j)=m(i);
end
end
4.Matlab实现AM调制解调
AM调制基带信号时域图如图4所示。
图4 AM调制基带信号
载波信号时域波形如图5所示。
图5 载波信号时域波形
AM信号时域图如图6所示。
图6 AM信号时域波形
AM解调后的信号如图7所示。
图7 AM解调完成信号时域波形
5.Matlab滤波器设计
滤波器系数获取步骤:
步骤1:使用MATLAB自带的滤波器设计工具,即fdatool获取滤波器系数。在MATLAB命令窗口输入fdatool回车,弹出滤波器设计工具
步骤2:滤波器参数设置。
选择低通滤波器,然后设置采样率、通带、阻带等参数后,最后点击设计滤波器,等待结束,生成滤波器,如图8所示:
图8 滤波器参数设置
步骤3:导出滤波器系数。
点击滤波器设计工具右上角“file”,下拉选择“Export”,设置导出系数的名称,勾选覆盖原数据,点击导出“Export”,如图9所示,返回到MATLAB工作区,找到刚刚取的变量名称,即导出的滤波器系数。
图9 导出滤波器系数
Matlab音频文件见:https://download.csdn.net/download/weixin_39813867/89880032。
详细的源码可以评论留言