基于matlab实现双路音频信号的AM调制与解调

这篇具有很好参考价值的文章主要介绍了基于matlab实现双路音频信号的AM调制与解调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、代码解析

使用audioread读取音频信号,将采样率设置为100kHz,并利用awgn函数为信号添加高斯白噪声。

%% 读取信号添加高斯白噪声并播放
fs1=1e5;  %设定采样率为100kHz
[x1,fs] = audioread('xiaomi1.wav');    % 输入第一路信号
x1=resample(x1,fs1,fs); %对采样率进行调整
fs=fs1;
snr=20;  % 设置告诉白噪声与信号的信噪比
px_dBW=0; %信号指定功率
x1=awgn(x1,snr,px_dBW); % 调用awgn函数为信号添加高斯白噪声

[x2,fs] = audioread('xiaomi2.wav');   
x2=x2*4; %对第二段音频本身响度低,响度进行增强
x2=resample(x2,fs1,fs);
fs=fs1;
x2=awgn(x2,snr,px_dBW); 

分别绘制两路音频信号的时频域图。

%% 绘制信号时域和频域图
figure(1);
subplot(221);
N1=length(x1);
N2=length(x2);
N=max(N1,N2); %取两路信号中较长的那路长度作为下面信号操纵的长度,保证信号长度一致
x1=[x1;zeros(N-N1,1)]; %对较短的信号进行补零
x2=[x2;zeros(N-N2,1)];
t=(0:N-1)/fs;% 计算时间坐标
plot(t,x1);
xlabel("时间");
ylabel("幅度");
title("第一路信号时域图");
subplot(223);
y=abs(fftshift(fft(x1))); %快速傅里叶变换的幅值
f=(0:N-1)*fs/N-fs/2;  %将横坐标转化,并对齐零点,显示为频率f
plot(f,y);
xlabel('频率'); 
ylabel('幅度'); 
title("第一路信号频域图");

subplot(222);
plot(t,x2);
xlabel("时间");
ylabel("幅度");
title("第二路信号时域图");
subplot(224);
y=abs(fftshift(fft(x2))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率'); 
ylabel('幅度');
title("第二路信号频域图");

结果如下:基于matlab实现双路音频信号的AM调制与解调

设置两路不同频率的载波,这里设置频率分别为35kHz和25kHz,载波频率可以根据需要进行更改,但是注意需要满足奈奎斯特采样定理,即信号频率不能超过采样频率的1/2,我们在开始设置了采样频率为100kHz,所以我们整个操作过程中所有频率的信号都不能大于50kHz。

%% 配置载波
f1=3.5e4; %第一路载波
y1=sin(2*pi*f1*t);
f2=2.5e4; %第二路载波
y2=sin(2*pi*f2*t);

对音频信号进行AM调制,并显示调制后信号的时频域图。

%% 用AM调制方式将信号分别叠加到载波上
x1=x1+1;
z1=x1.*y1';
figure(2);
subplot(221);
plot(t,z1);
xlabel("时间");
ylabel("幅度");
title("第一路信号与载波叠加的时域图");
subplot(223);
y = abs(fftshift(fft(z1))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率'); 
ylabel('幅度'); 
title("第一路信号与载波叠加的频域图");

x2=x2+1;
z2=x2.*y2';
subplot(222);
plot(t,z2);
xlabel("时间");
ylabel("幅度");
title("第二路信号与载波叠加的时域图");
subplot(224);
y = abs(fftshift(fft(z2))); %快速傅里叶变换的幅值
plot(f,y);
xlabel('频率'); 
ylabel('幅度'); 
title("第二路信号与载波叠加的频域图");

结果如下:
基于matlab实现双路音频信号的AM调制与解调

两路信号在空间中直接进行混叠。

%% 信号在空间中叠加
z=z1+z2;

接收到信号后,利用滤波器滤出两路载波,这里设置截止频率均为30kHz的切比雪夫二型滤波器,分别为低通和高通。滤波器函数生成方法见后文。

%% 信号分离
z1=filter(Chebyshev_two_high_15_100000_30000,z); %30kHz为界,分开两路信号
z2=filter(Chebyshev_two_low_15_100000_30000,z);

对滤出的两路信号分别进行相干解调,因为经过了调制和解调后,信号的幅度和中心点会发生偏移,这里进行调整,将信号中心重新放回0上,并将最大幅度调整为1,即与最开始输入的音频信号保持一致。
相干解调后,信号频谱再次搬移,会得到分别得到中心频率为0和2倍载波频率的共3路信号,使用低筒滤波器滤除载波信号,仅保留中心频率为0的信号(即为需要的音频信号)。使用低通滤波器依然为切比雪夫二型。并绘制最终解调恢复的两路音频信号的时频域图。

%% 相干解调
r1=z1.*y1'; %对第一路信号使用相干解调方法进行解调
r1=2*(r1-0.5); %中心回归零位并调整与原信号幅度一致
r1=filter(Chebyshev_two_low_10_100000_20000,r1); %设计切比雪夫二型低通滤波器进行滤波,滤除载波信号,保留音频信号
figure(3);
subplot(221);
plot(t,r1);
xlabel("时间");
ylabel("幅度");
title("解调出的第一路音频时域图");
subplot(223);
z = abs(fftshift(fft(r1))); %快速傅里叶变换的幅值
plot(f,z);
xlabel('频率'); 
ylabel('幅度'); 
title("解调出的第一路音频频域图");

r2=z2.*y2'; %对第二路信号使用相干解调方法进行解调
r2=2*(r2-0.5); %中心回归零位并调整与原信号幅度一致
r2=filter(Chebyshev_two_low_10_100000_20000,r2); %设计切比雪夫二型低通滤波器进行滤波,滤除载波信号
subplot(222);
plot(t,r2);
xlabel("时间");
ylabel("幅度");
title("解调出的第二路音频时域图");
subplot(224);
z = abs(fftshift(fft(r2))); %快速傅里叶变换的幅值
plot(f,z);
xlabel('频率'); 
ylabel('幅度'); 
title("解调出的第二路音频频域图");

结果如下:基于matlab实现双路音频信号的AM调制与解调结尾设置对解调音频的播放,可以用以比较解调出的音频信号与原始音频信号。

%% 暂停等待播发,按任意键结束程序
sound(r1,fs); %播放解调出的第一路音频
pause;
clear sound
sound(r2,fs); %播放解调出的第二路音频
pause;
clear all

二、滤波器的设置

可以在命令行输入fdatool打开,也可以从下面的方法进入。
进入matlab,选择APP,注意这里的路径需要为matlab安装目录下的bin文件夹,不然有可能报错。
基于matlab实现双路音频信号的AM调制与解调
在APP下拉菜单里面找到“信号处理与通信”里面的“Filter Designer”,点击打开
基于matlab实现双路音频信号的AM调制与解调
打开后在如下图所示的界面中第一栏可以选择滤波器类型(低通、高通、带通等)以及滤波方法(巴特沃斯、切比雪夫、椭圆等),每种滤波方法特性不一样。第二栏指定滤波的阶数,可以指定也可以采用系统给出的最小阶数。第三栏设置采样频率和截止频率。第四栏一般不管。
如下图设置为低通、切比雪夫二型、15阶、采样48000Hz、截止12000Hz的滤波器,选定参数后,点击最下方的Design Filter可以显示当前滤波器的特性曲线,点击上方状态栏的不同图标可以更换去向类型。
基于matlab实现双路音频信号的AM调制与解调
将滤波器导出为函数,点击左上角File按钮,如下图选择,即可导出.m格式的Function文件,保存到同一文件夹下,就可以进行调用。使用filter函数调用,示例如下:

z1=filter(Chebyshev_two_high_15_100000_30000,z); %30kHz为界,分开两路信号

基于matlab实现双路音频信号的AM调制与解调


完整代码分享

双路音频信号的AM调制与解调文章来源地址https://www.toymoban.com/news/detail-400806.html

到了这里,关于基于matlab实现双路音频信号的AM调制与解调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MATLAB源码-第120期】基于matlab的GFSK系统调制解调仿真,输出各个节点的波形以及功率谱。

    GFSK(高斯频移键控)是一种数字调制技术,广泛应用于无线通信领域,尤其是在低功率和短距离通信系统中,例如蓝牙技术。GFSK是频移键控(FSK)的一种改进形式,通过使用高斯滤波器对基带信号进行处理,以实现更高的频谱效率和更低的带外辐射。以下是GFSK系统的详细介

    2024年01月22日
    浏览(38)
  • 【USRP】调制解调系列7:GMSK、MSK、基于labview的实现

    在数字调制中,最小频移键控(Minimum-Shift Keying,缩写:MSK)是一种连续相位的频移键控方式,在1950年代末和1960年代产生。与偏移四相相移键控(OQPSK)类似,MSK同样将正交路基带信号相对于同相路基带信号延时符号间隔的一半,从而消除了已调信号中180°相位突变的现象。

    2024年02月11日
    浏览(27)
  • 基于FPGA的16QAM调制器verilog实现,包括testbench,并通过MATLAB显示FPGA输出信号的星座图

    目录 1.算法仿真效果 2.verilog核心程序 3.算法涉及理论知识概要 4.完整verilog matlab2022a/vivado2019.2仿真结果如下:  将FPGA仿真的数据导出,然后在matlab中将数据通过噪声之后,可以得到如下的星座图效果。 fpga工程版本信息:       16QAM全称正交幅度调制是英文Quadrature Amplitude

    2024年02月07日
    浏览(31)
  • 【Matlab信号隐藏】基于LSB实现音频水印嵌入提取附代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(33)
  • 【信号隐藏】基于LSB实现音频水印嵌入提取附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(32)
  • QPSK调制解调原理及MATLAB仿真

    ⭐️作者简介: 小瑞同学 ,主要学习 FPGA、信号处理、通信 等。 🍎个人主页:小瑞同学的博客主页 🌻个人信条:越努力,越幸运! ⏰日期:2023.11.16 📖文章内容概述:简单介绍了 QPSK 的基本原理和具体流程,并使用 MATLAB 进行了仿真分析。 👻 QPSK(正交相移键控) ,是

    2024年04月15日
    浏览(31)
  • 西电B测——基于simulink的2PSK和2DPSK调制解调系统实现

    这是学校的B级测试实验,仅供学习交流使用 误码率曲线绘制需要用到bertool工具: bertool工具教程: 通信专业Simulink---画误码率曲线(使用bertool工具)_Enpiyahh的博客-CSDN博客_simulink误码率曲线 报告和仿真文件下载链接: 链接:https://pan.baidu.com/s/1Fo5ixtqQpegDMYFd15cctA?pwd=FCNN  提取码

    2024年02月02日
    浏览(29)
  • 【USRP】调制解调系列3:2FSK、4FSK、8FSK,基于labview的实现

    FSK(Frequency-shift keying)是信息传输中使用得较早的一种调制方式,它的主要优点是: 实现起来较容易,抗噪声与抗衰减的性能较好。在中低速数据传输中得到了广泛的应用。最常见的是用两个频率承载二进制1和0的双频FSK系统。 FSK 信号:S(t)=cos(ω0t+2πfi·t) 【USRP】调制解调系列

    2024年02月10日
    浏览(23)
  • m基于FPGA的8PSK调制解调系统verilog实现,包含testbench测试文件

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 8PSK调制原理 2.2 基于FPGA的8PSK调制解调器设计和实现 3.Verilog核心程序 4.完整算法代码文件获得 vivado仿真结果如下: 借助matlab看8PSK的星座图:         随着通信技术的不断发展,相位调制技术因其高频谱效率和抗干扰能力而广

    2024年02月05日
    浏览(34)
  • 通信原理与MATLAB(十一):QAM的调制解调

    QAM调制原理如下图所示,基带码元波形经过串并转换分成I、Q两路,然后再经过电平转换(00转换成-1,01转换成-3,10转换成1,11转换成3),再与对应的载波相乘,然后再相加完成QAM的调制。 本次采用的是16QAM,M=16=2^k,因此k=4, L=2^(k/2)=4 QAM的解调原理如下图所示,QAM信号再分为I、Q两路

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包