利用DFT分析信号频谱
1. 利用FFT分析信号频谱
(1) 确定DFT计算的各参数(抽样间隔,截短长度,频谱分辨率等);
(2) 比较理论值与计算值,分析误差原因,提出改善误差的措施。
f_sam=50;t=1/f_sam;tp=4;n=500;
T=0:t:tp;
w=(-n/2:n/2-1)*(2*pi/n)*f_sam;
x=exp(-2*T);
X=t*fftshift(fft(x,n));
y=1./(1i*w+2);
subplot(2,1,1);
plot(T,x);
xlabel('t');title('时域波形');
subplot(2,1,2);
plot(w,abs(X),w,abs(y),"r-.");
axis([-10,10,0,1]);
title('幅度谱');xlabel('w');
legend("计算值","理论值");
2. 产生一个淹没在噪声中的信号x(t),分析信号的频谱
f1=50;f2=120;f3=360;
T=0:0.0001:0.1;
x=sin(2*pi*f1*T)+sin(2*pi*f2*T);
noise=0.2*sin(2*pi*f3*T);
y=x+noise;
subplot(2,2,1);
plot(T,x);
subplot(2,2,2);
plot(T,y);
fsam=240;t=1/fsam;tp=0.1;N=length(x);
T=0:t:tp;
w=(-N/2:N/2-1)*(2*pi/N)*fsam;
X=fftshift(fft(y,N));
subplot(2,2,3);
stem(w,abs(X));
axis([-80,80,0,600]);
50Hz和120Hz的正弦成分对应的谱峰位置如红圈所示。根据采样定理对原信号进行采样变成离散信号,再用DFT变换得到检测信号的频谱图。
3. 利用有限项分析三角波信号
t= -2:0.001:2;
n=input('请输入N: ');
cn=zeros(1,length(t));
for i=1:1:n % 偶次谐波为零
cn=cn+8/(pi*pi)*(-1).^(i-1).*sin((2*i-1)*pi*t)/((2*i-1).^2);
end
plot(t,cn);
4. 利用频域分析方法,重新对第一次实验时的含噪信号进行滤波处理
[x,fs]=audioread('motherLand.wav');
time=(0:length(x)-1)/fs;
subplot(3,2,1);
plot(time,x);
title('原音频')
xlabel('t/s');
fsam=fs;t=1/fsam;tp=10;n=length(x);
T=0:t:tp;
w=(-n/2:n/2-1)*(2*pi/n)*fsam/(2*pi)/1000;
X