首页 > 其他分享 >Matlab-对wav音频文件DSB调制及解调

Matlab-对wav音频文件DSB调制及解调

时间:2023-07-09 20:11:42浏览次数:36  
标签:sound fs signal fft 音频文件 carrier Matlab wav data

1.读取wav音乐文件

% 读取音频文件
filename = 'jay.wav';
[sound_data, fs] = audioread(filename);  % 9507502x2 44100
sound_data_1 =  sound_data(:, 1);
sound_data_1 = sound_data_1';             % 转置

sound_data有两列,因为此音乐文件有两个通道,音频采样率为44100;

这里只使用其中一个通道数据;

将多行数据转置为单行数据,方便后续调制

2.调制

% 调制参数
carrier_freq = 10e3;    % 载波频率
modulation_index = 1; % 调制指数
dc = 0;                 % 直流偏置

% 创建载波信号
t = (0:length(sound_data_1)-1) / fs;
carrier = cos(2*pi*carrier_freq*t);

% 进行AM调制
sound_data_1 = dc + modulation_index*sound_data_1;  %直流偏置,乘以调制指数在偏置    
modulated_signal = sound_data_1 .* carrier;
% modulated_signal = awgn(modulated_signal, 10, 'measured'); % 添加高斯白噪声

关于一些参数:

调制指数:也叫调制深度,定义为调制信号振幅与载波振幅之间的比例。调制指数决定了调制信号对载波振幅的影响程度。

3.相干解调

DSB只能使用相干解调

%%%%%%%%%%%%%相干解调%%%%%%%%%%%%%
% demodulated_signal = modulated_signal .* carrier;    % 理想情况下的相干解调,同频同相
carrier_new = cos(2*pi*carrier_freq*t+pi/4);           % 一般情况下的相干解调,有个相位偏移
demodulated_signal = modulated_signal .* carrier_new;  


% 设计低通滤波器
[b, a] = butter(20, carrier_freq/(fs/2)); % 设计6阶低通滤波器
% 低通滤波
filtered = filter(b, a, demodulated_signal); 
subplot(2, 1, 1);
plot(sound_data_1);
subplot(2, 1, 2);
plot(filtered);
sound(filtered, fs);  % fs为采样率

 

 4.FFT分析

%%%%%%%%%%%%%%%%%%%绘图%%%%%%%%%%%%%%%%%%
% fft点数
fft_points = length(sound_data_1);
%%%%%%%%%%%%%%画原始信号的fft%%%%%%%%%%%%%
subplot(4, 1, 1);
x1 = fs*(0:(fft_points-1))/fft_points;
y1 = abs(fft(sound_data(:, 1), fft_points));
plot(x1, y1);                             
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

%%%%%%%%%%%%%%画加了偏置原始信号的fft%%%%%%%%%%%%%
subplot(4, 1, 2);
x2 = fs*(0:(fft_points-1))/fft_points;
y2 = abs(fft(sound_data_1, fft_points));
plot(x2, y2);                             
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

%%%%%%%%%%%%%画am调制信号的fft%%%%%%%%%%%%%
subplot(4, 1, 3);
x3 = fs*(0:(fft_points-1))/fft_points;
y3 = abs(fft(modulated_signal, fft_points));
plot(x3, y3);                             
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

%%%%%%%%%%%%%画解调调制信号的fft%%%%%%%%%%%%%
subplot(4, 1, 4);
x4 = fs*(0:(fft_points-1))/fft_points;
y4 = abs(fft(demodulated_signal, fft_points));
plot(x4, y4);                            
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('FFT Spectrum');

 

 

5.完整代码

% DSB调制

% 读取音频文件
filename = 'jay.wav';
[sound_data, fs] = audioread(filename);  % 9507502x2 44100
sound_data_1 =  sound_data(:, 1);
sound_data_1 = sound_data_1';             % 转置

% % 调制参数
carrier_freq = 10e3;  % 载波频率
modulation_index = 1; % 调制指数
dc = 0;               % 直流偏置

% 创建载波信号
t = (0:length(sound_data_1)-1) / fs;
carrier = cos(2*pi*carrier_freq*t);

% 进行AM调制
sound_data_1 = dc + modulation_index*sound_data_1;  %直流偏置,乘以调制指数在偏置
modulated_signal = sound_data_1 .* carrier;

modulated_signal = awgn(modulated_signal, 40, 'measured'); % 添加高斯白噪声

%%%%%%%%%%%%%相干解调%%%%%%%%%%%%%
% demodulated_signal = modulated_signal .* carrier;    % 理想情况下的相干解调,同频同相
carrier_new = cos(2*pi*carrier_freq*t+pi/4);           % 一般情况下的相干解调,有个相位偏移
demodulated_signal = modulated_signal .* carrier_new;  


% 设计低通滤波器
[b, a] = butter(20, carrier_freq/(fs/2)); % 设计6阶低通滤波器
% 低通滤波
filtered = filter(b, a, demodulated_signal); 
subplot(2, 1, 1);
plot(sound_data_1);
subplot(2, 1, 2);
plot(filtered);
sound(filtered, fs);  % fs为采样率

 

 

6.说明

 ①、频谱分析

假设调制指数为1,则DSB调制信号在Fc处左右各有一个带宽的基带信号,总共占用带宽为2B【B为基带信号的带宽】

 

标签:sound,fs,signal,fft,音频文件,carrier,Matlab,wav,data
From: https://www.cnblogs.com/judes/p/17539290.html

相关文章

  • m基于FPGA的图像Harris角点特征提取和图像配准verilog实现,包含testbench和MATLAB辅助
    1.算法仿真效果Quartusii18.0+ModelSim-Altera6.6d StarterEdition的测试结果如下:       MATLAB2022a测试结果如下:     2.算法涉及理论知识概要      在计算机视觉领域中,图像特征提取和图像配准是两个基本的问题。图像特征提取是指从图......
  • MATLAB作图实战
    二维曲线二维曲线是一种最为常见的曲线图表,它能反应两个变量之间的因果关系。基本代码>>x=linspace(1,200,100);>>y1=log(x)+1;>>y2=log(x)+2;>>figure;%创建一个图像窗口>>plot(x,y1);>>holdon%多图共存于一个窗口>>plot(x,y2);>>holdoff......
  • 阵列信号处理及matlab仿真-------波束形成算法基础知识以及MMSE、MSNR和LCMV的MATLAB
    上一篇《阵列信号处理及MATLAB仿真-----阵列信号绪论》里面说了阵列信号处理研究的四个主要问题:波束形成技术、空间谱估计、信号源定位、信源分离。接下来我们就波束形成来做一个详细的学习。一、波束形成的定义:首先说一下它的物理意义,阵列天线的方向图是全方向的,但是......
  • Matlab-时间换算
    %时间点设置,起止时间(时间点,如7点15分35秒→071535000。注意:起始时间为早六点060000000),精确到毫秒t1_sfm='060000000';t2_sfm='060000005';%时间对应关系换算t1=getTime(t1_sfm)t2=getTime(t2_sfm)functiont=getTime(t_sf)%时间换算子程序hour=s......
  • 2023-07-06 Matlab中符号和句柄之间的转换.md
    2023-07-06Matlab中符号和句柄之间的转换Matlab符号函数函数句柄在Matlab中我们通常使用diff函数求导,其中如果f是符号函数,diff也返回符号函数,那么符号函数和句柄之间如何转换呢?下面给出一些例子:f1=@(x)sin(x);%函数句柄 symsx f2=sin(x);%符号 f3(x)=sin(x);%符......
  • m基于GA遗传优化算法的二维室内红外传感器部署策略matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       遗传算法的原理        遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置......
  • 2023-07-05 Matlab中的数值积分.md
    2023-07-05Matlab中的数值积分Matlab数值积分在《计算方法》一书中有介绍基本的数值分析中的积分方法,我们这里重点关注Matlab是如何帮助我们快速计算数值积分。1.integral簇函数integral簇函数下包含integral,integral2,integral3三个函数,分别对应于一重积分,二重积分和......
  • m基于细菌觅食优化的DSR网络路由协议优化算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        移动自组网(MobileAdHocNetwork,简称MANET)是一种无需基础设施支持的网络,它由一组移动的节点组成,这些节点可以自组织形成一个网络,实现数据的传输和共享。由于MANET是一种去中心化......
  • 象群游牧优化算法(EHO)(Matlab完整代码实现)
    ......
  • m基于MOEA算法的无线传感器网络最优部署matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要       无线传感器网络(WirelessSensorNetwork,WSN)是一种分布式传感器网络,由大量的无线传感器节点组成,它们可以自组织、自适应、自愈合,通过无线通信协同完成任务。WSN应用广泛,如环境监......