赞
踩
和幅度调制不同,角度调制是将信号m(t)信息包含到发送信号S(t)的相位上的一种手段(而幅度调制是将信息包含到幅值上)。
角度调制有两种方式,一种是相位调制(phase modulation——PM),一种是频率调制(frequency modulation——FM),也就是我们所说的调相和调频。
接下来主要介绍调频(FM)
先看公式:
载波频率为fc,FM调制信号Sfm(t)由余弦信号Accos(2pifct) 在相位中加上消息信号m(t)积分乘以2piKfm后得到。
观察发现,如果对相位进行微分,则得到
也就是说,消息信号m(t)被放在了频率中,所以这种调制方法叫做调频。
那么就自然衍生出来一个问题:
如果直接将m(t)放在fi(t)中,然后加到cos上不好吗?为什么要积分呢?
类比自由落体中距离的计算,虽然速度v等于gt,但是距离并不是gt^2,同理,虽然频率是fc+kfmm(t),但是相位并不是直接乘以t。
所以需要积分
(可能解释的不清楚,大家可以看李晓峰老师的mooc——通信原理_中国大学MOOC(慕课) (icourse163.org)中4:20所讲)
既然原信号是包含在Sfm(t)的频率中的,想要从中解调,就需要对其进行微分。
微分后,发现原信号变道Sd(t)的包络上面了,所以现在需要提取包络。
这时候就需要用到希尔伯特变换了。
先看看希尔伯特变换(希尔伯特变换的作用是构造复信号,就是将信号x(t)构造成为x(t)+j*x(t))
因为载波是正弦信号,根据欧拉公式正好能够凑成一个虚信号,直接求模能够得到包络了。
然后将包络搬到x轴上,然后乘以合适的系数,就能够得到原信号了。
(别看讲了这么多,代码就两行)
我准备了一段音乐,
采样率fs是44100(我自己测出来的,你要是不知道可以先执行[music,fs] = audioread(“music.mp3”),这样就知道fs是多少了)
截取了从1s到6s共5s的音乐片段。
取单声道并且转至为行向量(matlab读取的音乐本来是双声道列向量)。
[music,fs] = audioread('music.mp3',[1*44100+1,6*44100]);
dt = 1 / fs; % 时间间隔
t_length = fs * 5; % 5s
t = (1:t_length)*dt; % 时间矢量
f = (1:t_length)*(fs/t_length) - fs / 2; % 频率矢量
music_t = music(:,1)';
按照公式进行调制,得到singal_fm为fm调制信号。
%% 将音乐fm调频
fc = 10000; % 载波频率
k_fm = 100; % 频偏常数
% 对音乐信号进行积分
int_music(1) = 0;
for i=1:t_length-1
int_music(i+1)=int_music(i)+music_t(i)*dt;
end
singal_fm = cos(2.*pi.*fc.*t + 2.*pi*k_fm.*int_music);
先微分后求包络,就两行代码
music_sdt = [0 diff(singal_fm)]; % 先对已调信号做微分
music_rt = abs(hilbert(music_sdt)); % 再构造解析信号求包络,得到非相干解调信号;
对music_rt进行整理
减去平均值搬移到x轴上,乘以100是因为100比较合适,不是说非得乘100
music_rt = music_rt - mean(music_rt);
music_rt = music_rt * 100;
这是我的音乐信号和对应频谱(频率集中在4kHz)
然后进行fm调制,又对fm调制信号加上高斯白噪声(信噪比为50dB)
对应频谱如下,可见频率集中在10kHz,原始fm信号只有10k附近有频率分量,而带噪音乐在全频率段上都存在频率分量
对其进行解调后得到解调音乐:
可以发现,从原始fm信号(无噪声)中提取出来的信号形状优美(虽然存在两个高频成分),而带噪fm信号中提取出的信号被噪声淹没(但是任然能够听出来音乐的存在)
将提取出来的两个信号与原信号频谱对比如下:
发现都从中提取出了原信号,而带噪信号中有一个带宽从0到13kHz的噪声,这不是全频率上的高斯白噪声,可见非相干解调方法中有滤波器的成分。
clc; clear; % 作者:@_@滋行 % 时间:2022年9月27日 % 内容:音乐信号的fm调制解调 %% 获取音乐5s [music,fs] = audioread('music.mp3',[1*44100+1,6*44100]); dt = 1 / fs; % 时间间隔 t_length = fs * 5; % 5s t = (1:t_length)*dt; % 时间矢量 f = (1:t_length)*(fs/t_length) - fs / 2; % 频率矢量 music_t = music(:,1)'; music_f = fftshift(fft(music_t)); % sound(music_t) %% 将音乐fm调频 fc = 10000; % 载波频率 k_fm = 100; % 频偏常数 % 对音乐信号进行积分 int_music(1) = 0; for i=1:t_length-1 int_music(i+1)=int_music(i)+music_t(i)*dt; end singal_fm = cos(2.*pi.*fc.*t + 2.*pi*k_fm.*int_music); music_noise = awgn(singal_fm,50); % 添加高斯噪声 单位为db figure; subplot(211); plot(t,music_t);xlabel('时间(S)');ylabel('幅度(V)');grid on;title('music(t)'); subplot(212); plot(f,music_f);xlabel('频率(Hz)');ylabel('幅度(V)');grid on;title('原信号频谱'); singal_fm_f = fftshift(fft(singal_fm)); singal_fm_f = abs(singal_fm_f); music_noise_f = fftshift(fft(music_noise)); music_noise_f = abs(music_noise_f); figure; subplot(211); plot(f, singal_fm_f);title('原始调制音乐频谱');xlabel('频率(Hz)');ylabel('幅度(V)'); subplot(212); plot(f, music_noise_f);title('带噪调制音乐频谱');xlabel('频率(Hz)');ylabel('幅度(V)'); %% 解调后播放 music_sdt = [0 diff(singal_fm)]; % 先对已调信号做微分 music_rt = abs(hilbert(music_sdt)); % 再构造解析信号求包络,得到非相干解调信号; noise_sdt = [0 diff(music_noise)]; % 先对已调信号做微分 noise_rt = abs(hilbert(noise_sdt)); % 再构造解析信号求包络,得到非相干解调信号; music_rt_f = fftshift(fft(music_rt)); music_rt_f = abs(music_rt_f); noise_rt_f = fftshift(fft(noise_rt)); noise_rt_f = abs(noise_rt_f); noise_rt = noise_rt - mean(noise_rt); noise_rt = noise_rt * 100; music_rt = music_rt - mean(music_rt); music_rt = music_rt * 100; figure; subplot(211); plot(t,music_rt);title('原始解调音乐'); subplot(212); plot(t,noise_rt);title('带噪解调音乐'); music_rt_f = fftshift(fft(music_rt)); noise_rt_f = fftshift(fft(noise_rt)); figure; subplot(211); plot(f, music_f);title('原始解调音乐频谱对比');hold on;plot(f, music_rt_f);xlabel('频率(Hz)');ylabel('幅度(V)'); subplot(212); plot(f, noise_rt_f);title('带噪解调音乐频谱对比');hold on;plot(f, music_f);xlabel('频率(Hz)');ylabel('幅度(V)'); % sound(music_rt,fs); % sound(noise_rt,fs);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。