当前位置:   article > 正文

MATLAB实验——干扰与抗干扰_matlab添加随机干扰

matlab添加随机干扰

实验目的与意义

  1. 了解干扰的定义以及干扰的类型。
  2. 学习实单音干扰、复单音干扰、抗单音干扰、多音干扰、白噪声窄带干扰和扫频干扰的原理。
  3. 掌握在matlab对音频信号添加多音干扰和扫频干扰的方法。
  4. 熟悉reshape函数、cumsum函数、mesh函数,掌握在matlab中绘出三维曲面图的方法。

实验过程

  1. 使用audioread函数导入音频信号exp.wav,定义音频信号wave和采样率fs。
[wave, fs] = audioread("exp.wav");
  • 1
  1. 添加多音干扰。设置FFT点数为8192,采样32组。使用for循环随机生成三种干扰信号,其中InitPhase为初相位,使用rand函数生成;Fj为噪声频率,使用randi函数生成。添加多音干扰后分布生成原音频、三种噪声以及添加噪声后的音频的频谱图。
N = 8192;%FFT点数
M = 32;
SampLen = M*N;
wave = wave(1:SampLen,1).';
L = length(wave);
time = L/fs;
for jamming_index = 1:3
	InitPhase = rand;
	Fj = (randi(N/2)-1)*fs/N;
	jamming(jamming_index,:) = cos(2*pi*(Fj/fs*[0:SampLen-1]+InitPhase));
end
jamming = sum(jamming);
wave_jammed = wave+jamming;
sound(wave_jammed,fs);
%画出频谱图
figure('Name','添加多音干扰 频谱图');
subplot(311);
plot([-L/2:L/2-
1]/time,abs(fftshift(fft(transpose(wave)))),'linewidth',1.5);
title('原音频'); xlabel('频率/Hz'); grid on;
subplot(312);
plot([-L/2:L/2-
1]/time,abs(fftshift(fft(transpose(jamming)))),'linewidth',1.5);
title('三种频率的噪声'); xlabel('频率/Hz'); grid on;
subplot(313);
plot([-L/2:L/2-
1]/time,abs(fftshift(fft(transpose(wave_jammed)))),'linewidth',1.5);
title('添加噪声后的音频'); xlabel('频率/Hz'); grid on;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

在这里插入图片描述
分析频谱图可知,生成了742.896Hz、7800.4Hz和16925.1Hz三种频率的噪声。

  1. 进行分组合并检测干扰。使用reshape函数将加噪后的音频矩阵重构为8192×32的矩阵,使用fft函数对重构后的矩阵进行快速傅里叶变换,画出变换后矩阵的三维曲面图。
wave_groups = reshape(wave_jammed,N,M);
wave_groups_fft = fft(wave_groups);
figure('Name','分组合并检测干扰 三维曲面图');
mesh(abs(wave_groups_fft));
combined_spectrum = sum(abs(wave_groups_fft),2);
jammed_index = find(combined_spectrum>2000*M);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
对三维曲面图分析可知,共有8个平面,每个平面有32条竖直方向的线。其中有6个平面的高度远高于剩下的两个面,高度约为4096。
对wave_groups的频谱进行合并,生成频谱图。可以看出有6种远高于其它频率的信号。使用find函数找到幅值大于2000×32Hz的信号,在下一步中予以删除。
在这里插入图片描述

  1. 删除上一步中找的的干扰信号。生成删除干扰后的三维曲面图。对删除干扰信号后的音频进行重构,使其能够正常播放。
wave_groups_fft(jammed_index,:) = 0;
figure('Name','干扰删除 三维曲面图');
mesh(abs(wave_groups_fft));
wave_antijammed = reshape(ifft(wave_groups_fft),1,[]);
sound(wave_antijammed,fs);
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
分析三维曲面图可知,上一步中较高的6个平面已经消失,说明干扰信号删除成功。

  1. 添加扫频干扰信号。生成时长为10s,周期为2s,从100Hz到10100Hz之间匀速变化的扫频干扰信号。生成时域图。
[wave,fs] = audioread("exp.wav");
wave = transpose(wave);
t_scale = 0:1/fs:(10-1/fs);
f_t = 10000*abs(1-mod(t_scale,2))+100;
figure('Name','扫频干扰 时域图');
plot(t_scale,f_t,'linewidth',2);
title('扫频干扰'); xlabel('时间/s'); grid on;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号