二、正交调制
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 = 1; % 直流偏置
% sound_data_1_i = dc + modulation_index*sound_data_1_i;
% sound_data_1_q = dc + modulation_index*sound_data_1_q;
% 创建载波信号
t = (0:length(sound_data_1)-1) / fs;
carrier_i = cos(2*pi*carrier_freq*t);
carrier_q = sin(2*pi*carrier_freq*t);
% 进行正交调制
modulated_signal_i = sound_data_1_i .* carrier_i;
modulated_signal_q = sound_data_1_q .* carrier_q;
modulated_signal = modulated_signal_i+modulated_signal_q;
关于一些参数:
调制指数:也叫调制深度,定义为调制信号振幅与载波振幅之间的比例。调制指数决定了调制信号对载波振幅的影响程度。
直流偏置:AM调制时需要将基带信号往上搬移的幅值,保证信号所有采样点都在正轴
3.包络检波解调
%%%%%%%%%%%%%%1.使用接口解调,包络检波%%%%%%%%%%%%%
% 解调恢复原始信号
demodulated_signal = amdemod(modulated_signal, carrier_freq, fs, 0, 0);
% 播放解调后的音频
sound(demodulated_signal, fs);
4.相干解调
%%%%%%%%%%%%%%相干解调%%%%%%%%%%%%%
% demodulated_signal = modulated_signal .* carrier_i;
demodulated_signal = modulated_signal .* carrier_q;
% 设计低通滤波器
[b, a] = butter(6, carrier_freq/(fs/2)); % 设计6阶低通滤波器
% 低通滤波
filtered = filter(b, a, demodulated_signal);
subplot(2, 1, 1);
plot(modulated_signal);
subplot(2, 1, 2);
plot(filtered);
sound(filtered, fs); % fs为采样率