语音信号处理-用MATLAB绘制正弦波及白噪声信号

实验一 用MATLAB绘制正弦波及白噪声信号

一、实验要求

(1)用MATLAB产生正弦波信号及白噪声信号,并显示各自时域波形图;
(2)进行FFT变换,显示各自频谱图;
(3)做出两种信号的均方根图谱,功率图谱,以及对数方均根图谱;
(4)用IFFT傅里叶反变换恢复信号,并显示时域波形。

二、实验源程序

1.产生正弦波信号

%用MATLAB产生正弦波信号
fs =500;      %设定采样频率
N =180;      %计算向量的N点傅里叶变换
n =0:N-1;    %可以看成采样
t = n/fs; 
f0 = 18;      %设定正弦信号频率
 
%生成正弦信号
x = sin(2*pi*f0*t);
figure(1);
subplot(221);
plot(t,x);     %作正弦信号的时域波形
xlabel('时间/ s');
ylabel('幅值');
title('时域波形','color','red');
grid;

%进行FFT 变换并做频谱图
y = fft(x,N);   %进行FFT 变换
mag = abs(y); %求幅值
%进行对应的频率转换,即频率点(x轴的值或说是点的x坐标)
f = (0:length(y) -1)'*fs/ length(y);        
subplot(222);
plot(f,mag);   %作频谱图
axis([0,100,0,80]);
xlabel('频率/ Hz');
ylabel('幅值');
title('幅频谱图','color','red');
grid;

%求均方根谱
sq = abs(y);          
subplot(223);
plot(f,sq);
xlabel('频率/ Hz');
ylabel('均方根谱');
title('均方根谱','color','red');
grid;
 
%用IFFT 恢复原始信号
xifft = ifft(y);
magx = real(xifft);
ti = [0:length(xifft)-1] / fs;
subplot(224);
plot(ti,magx);
xlabel('时间/ s');
ylabel('幅值');
title('IFFT 后的信号波形','color','red');
grid;
sgtitle('产生正弦波信号','color','black')

2.产生白噪声信号

%****************2.白噪声****************%
fs=35;				 %设定采样频率
t = -5:0.1:5;
x = rand(1,100);
figure(2);
subplot(221);
plot(t(1:100),x);    %作白噪声的时域波形
xlabel('时间(s)');
ylabel('幅值');
title('时域波形','color','red');
grid;
 
%进行FFT 变换并做频谱图
y = fft(x);           %进行FFT 变换
mag = abs(y);         %求幅值
%进行对应的频率转换
f = (0:length(y) -1)'*fs/ length(y);            
subplot(222);
plot(f,mag);         %作频谱图
xlabel('频率/ Hz');
ylabel('幅值');
title('幅频谱图','color','red');
grid;
 
%求均方根谱
sq = abs(y);
subplot(223);
plot(f,sq);
xlabel('频率/ Hz');
ylabel('均方根谱');
title('均方根谱','color','red');
grid;
 
%用IFFT 恢复原始信号
xifft = ifft(y);
magx = real(xifft);
ti = [0:length(xifft)-1] / fs;
subplot(224);
plot(ti,magx);
xlabel('时间/ s');
ylabel('幅值');
title('IFFT 后的信号波形','color','red');
grid;
sgtitle('产生白噪声信号')

三、运行结果

1.产生正弦波信号
在这里插入图片描述

2.产生白噪声
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51380854/article/details/127550918