1.设计要求
1)用MATLAB产生正弦波及白噪声信号,并显示各自时域波形图。
2)进行FFT变换,显示各自频谱图。
3)做出两种信号的均方根图谱,功率图谱,以及对数方均根图谱。
4)用IFFT变换回复信号,并显示时域波形图。
fs=100; %设定采样频率
N=128;
n=0:N-1;
t=n/fs;
f0=10; %设定正弦信号频率
x=sin(2*pi*t*f0);
figure(1);
plot(t,x); %画波形图
xlabel('时间/s');
ylabel('幅值');
title('时域波形图');
grid;
正弦波图
进行FFT后的频谱图
y=fft(x,N); %进行傅里叶变换
mag=abs(y); %求幅值
figure(2);
f=(0:length(y)-1)'*fs/length(y); %进行对应的频率转换
plot(f,mag); %画频谱图
axis([0,100,0,80]);
xlabel('频率/Hz');
ylabel('幅值');
title('幅频谱图');
grid;
功率谱,对数谱
power=mag.^2;
figure(3);
subplot 211;
plot(f,power);
xlabel('频率/Hz');
ylabel('功率谱');
title('功率谱图');
grid;
%--------------%
ln=log(mag);
subplot 212;
plot(f,ln);
xlabel('频率/Hz');
ylabel('对数谱');
title('对数谱图');
grid;
用IFFT后恢复的信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(4);
plot(ti,magx);
xlabel('时间/s');
ylabel('幅值');
title('IFFT后的信号');
grid;
白噪声时域波形图,这里可能每一个系统生成的随机数不一样,画出来的图也不一样。
fs=50;
t=-50:0.1:50;
x=rand(1,100);
figure(1);
plot(t(1:100),x);
xlabel('时间/s');
ylabel('幅值');
title('时域波形图');
grid;
傅里叶变换后的频谱图
y=fft(x); %进行傅里叶变换
mag=abs(y); %求幅值
figure(2);
f=(0:length(y)-1)'*fs/length(y); %进行对应的频率转换
plot(f,mag); %画频谱图
xlabel('频率/Hz');
ylabel('幅值');
title('幅频谱图');
grid;
功率谱图,对数谱图
power=mag.^2;
figure(3);
subplot 211;
plot(f,power);
xlabel('频率/Hz');
ylabel('功率谱');
title('功率谱图');
grid;
%---对数谱----%
ln=log(mag);
subplot 212;
plot(f,ln);
xlabel('频率/Hz');
ylabel('对数谱');
title('对数谱图');
grid;
IFFT恢复后的原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(4);
plot(ti,magx);
xlabel('时间/s');
ylabel('幅值');
title('IFFT后的信号');
grid;
教材参考文献
语音信号处理实验教程[M],北京:机械工业出版社,2016.2