常见噪声仿真

clear;
clc;
%产生带通噪声(用窄带高斯白噪声做模拟)
%初始条件设置
fs=44100;           %采样频率:44.1kHz
f_howling=10000;    %单频啸叫的对应频率
duration=1;         %音频时长1s
%保存的语音信号路径及名称,助教学姐验证的时候注意一下路径
filename='D:\\project_record\\speech.wav';
filename_lbn='D:\\project_noise\\speech_lbn.wav';
filename_hbn='D:\\project_noise\\speech_hbn.wav';

%读取原始音频信号
speech_record=audioread(filename);
video_len=length(speech_record);

%产生高斯白噪声
noise_wgnl=wgn(fs*duration,1,10,0.06);
noise_wgnh=wgn(fs*duration,1,1,0.11);

%将高斯白噪声通过低通滤波器得到低频噪声
Wp_l1=(20*2*pi)/fs;Wp_h1=(360*2*pi)/fs;
Ws_l1=(30*2*pi)/fs;Ws_h1=(350*2*pi)/fs;

Wc1=[(Wp_l1+Ws_l1)/2/pi,(Wp_h1+Ws_h1)/2/pi];% 截止频率在通带和阻带边界频率的中点
%Wc=(Wp+Ws)/2;
% 计算过渡带宽度
Wb1=Ws_l1-Wp_l1;

%blackman窗设计
M=ceil(5.56*pi/Wb1);
N=2*M;
numl=fir1(N,Wc1,'band',blackman(N+1));
noise_lbn=filter(numl,1,noise_wgnl);
speech_lbn=speech_record+noise_lbn;
%求取信噪比
snr_lbn=snr(speech_record,noise_lbn);
disp('加入低频带通噪声信号的信噪比(dB):'),disp(snr_lbn)

%将高斯白噪声通过高通滤波器得到高频噪声
Wp_l2=(10000*2*pi)/fs;Wp_h2=(11050*2*pi)/fs;
Ws_l2=(10050*2*pi)/fs;Ws_h2=(11000*2*pi)/fs;

Wc2=[(Wp_l2+Ws_l2)/2/pi,(Wp_h2+Ws_h2)/2/pi];% 截止频率在通带和阻带边界频率的中点
%Wc=(Wp+Ws)/2;
% 计算过渡带宽度
Wb2=Ws_l2-Wp_l2;

%blackman窗设计
M=ceil(5.56*pi/Wb2);
N=2*M;
numh=fir1(N,Wc2,'band',blackman(N+1));
noise_hbn=filter(numh,1,noise_wgnh);
speech_hbn=speech_record+noise_hbn;
snr_hbn=snr(speech_record,noise_hbn);
disp('加入高频带通噪声信号的信噪比(dB):'),disp(snr_hbn)

%保存录音
audiowrite(filename_lbn,speech_lbn,fs);
audiowrite(filename_hbn,speech_hbn,fs);
%听录音
%sound(speech_lbn,fs);
%sound(speech_hbn,fs);


%绘制图像
%低频带通噪声时域与功率谱图像
t=(0:1:video_len-1)/video_len*duration;%时间轴单位s
n=0:video_len-1;        
N=video_len;      
figure(1)
subplot(2,1,1);
plot(t,noise_lbn);
title('低频带通噪声时域图像');
xlabel('时间:s');
grid on;
R=xcorr(noise_lbn,noise_lbn);
Y=fft(R);
subplot(2,1,2);
plot(10*log10(abs(Y)));
title('低频带通噪声音频信号功率谱图像');

%粉红噪声时域与功率谱图像
video_len=length(speech_record);
t=(0:1:video_len-1)/video_len*duration;%时间轴单位s
n=0:video_len-1;        
N=video_len;      
figure(2)
subplot(2,1,1);
plot(t,noise_hbn);
title('高频带通噪声时域图像');
xlabel('时间:s');
grid on;
R=xcorr(noise_hbn,noise_hbn);
Y=fft(R);
subplot(2,1,2);
plot(10*log10(abs(Y)));
title('高频带通噪声音频信号功率谱图像');



%绘制原始音频信号的时域频域图像
t=(0:1:video_len-1)/video_len*duration;%时间轴单位s
n=0:video_len-1;        
N=video_len;      
%=======时域图像======
figure(3)
subplot(2,1,1);
plot(t,speech_record);
title('原始音频信号时域图像');
xlabel('时间:s');
grid on;
%=======频域图像======     
Y1=fft(speech_record,N);    
mag=abs(Y1);            
f=n*fs/N;               
%取1/2作图
subplot(2,1,2);
plot(f(1:fix(N/2)),mag(1:fix(N/2)));
title('原始音频信号频谱图');
xlabel('频率/Hz');      
ylabel('幅度');         
grid on;    


figure(4)
%绘制加入低频带通噪声的音频信号的时域功率谱图像
%=======时域图像======
subplot(2,1,1);
plot(t,speech_lbn);
title('加入低频带通噪声音频信号时域图像');
xlabel('时间:s');
grid on;
%=======功率谱图像======     
%取1/2作图
subplot(2,1,2);
R=xcorr(speech_lbn,speech_lbn);
Y=fft(R);
subplot(2,1,2);
plot(10*log10(abs(Y)));
title('加入低频带通噪声音频信号功率谱图像');


%绘制加入粉红噪声的音频信号的时域功率谱图像
figure(5)
%=======时域图像======
subplot(2,1,1);
plot(t,speech_hbn);
title('加入高频带通噪声音频信号时域图像');
xlabel('时间/s');
grid on;
%=======功率谱图像======                
R=xcorr(speech_hbn,speech_hbn);
Y=fft(R);
subplot(2,1,2);
plot(10*log10(abs(Y)));
title('加入高频带通噪声音频信号功率谱图像');





  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 常见雷达信号的Matlab仿真可以通过以下步骤进行: 1. 选择要仿真常见雷达信号类型,如连续波雷达信号(CW)、脉冲压缩雷达信号(Pulse Compression)、线性调频雷达信号(Linear Frequency Modulated)等。 2. 根据选定的雷达信号类型,确定仿真所需的参数,如中心频率、带宽、脉宽、调制方式等。 3. 在Matlab环境下创建仿真模型。可以使用波形发生器函数(waveform Generator)来生成所需信号的基本波形。如果是CW雷达信号,可以直接定义频率和振幅;如果是脉冲压缩雷达信号,可以用Matlab内置的脉冲压缩函数来生成信号;如果是线性调频雷达信号,可以使用线性加频函数(Chirp)来生成信号。 4. 添加噪声和干扰。可以使用Matlab提供的随机噪声生成函数来添加噪声,根据仿真需要可以选择不同功率级别的噪声。另外,还可以添加其他常见干扰信号,如多径干扰、自动增益控制(AGC)引起的信号失真等。 5. 进行仿真实验和分析。可以在仿真模型中设置目标的距离、速度等参数,然后观察仿真得到的雷达回波信号的性质,如时域波形、频谱特性等。可以使用Matlab提供的信号分析和处理函数来对仿真结果进行进一步分析。 6. 结果可视化和报告。可以使用Matlab的绘图功能,将仿真结果以图形的形式展示出来,如时域波形、频谱图等。根据仿真结果,可以撰写相关的实验报告,总结仿真结果的特点和性能评估。 总之,常见雷达信号的Matlab仿真可以通过选择信号类型、设定参数、生成波形、添加噪声和干扰、进行实验和分析以及结果可视化和报告等步骤来完成。 ### 回答2: 常见的雷达信号有连续波信号(CW)、脉冲信号、调频连续波信号(FMCW)和相干相重叠信号(COS)等。在Matlab中进行雷达信号的仿真可以使用信号处理工具箱来实现。 对于连续波信号,可以通过生成正弦波的方式进行仿真。可以指定波频、幅度和相位等参数,然后使用plot函数将波形绘制出来。 脉冲信号的仿真可以通过生成一个包络为高斯形状的波形来实现。可以指定脉冲的中心频率和带宽、脉宽等参数,并使用plot函数将波形绘制出来。 调频连续波信号的仿真可以通过使用chirp函数来实现。可以指定起始频率、终止频率、脉宽和采样频率等参数,并使用plot函数将波形绘制出来。 相干相重叠信号的仿真可以通过将多个脉冲信号叠加在一起来实现。可以先生成多个脉冲信号,然后将它们进行逐个相位累加得到相干相重叠信号的波形,并使用plot函数将波形绘制出来。 以上就是常见雷达信号在Matlab中的仿真实现方法。通过合理设置参数并使用相应的函数,可以快速生成各种雷达信号的波形,并对其进行进一步分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值