【matlab信号处理】FFT简单示例
%构成并画出受噪声污染的信号
clear,randn('state',0); %正态随机数发生器置0
t=linspace(0,10,512); %生成均匀采样数组(0-10之间,共计512个数)
y=6*cos(6*t)-4*sin(12*t)+6*randn(size(t)); %生成波形和标准偏差为0的正态随机噪声randn(size(t))
subplot(311);
plot(t,y)
xlabel('t');
ylabel('信号值f(t)');
%计算并画出受噪声污染信号的幅度谱
Y=fft(y); %计算信号的DFT
Ts=t(2)-t(1); %计算信号的采样周期
Ws=2*pi/Ts; %计算信号的采样频率
Wn=Ws/2;
w=linspace(0,Wn,length(t)/2);
Ya=abs(Y(1:length(t)/2));
subplot(312);
plot(w,Ya)
xlabel('\omega');
ylabel('频谱幅值F(\omega)');
%在有效信号频率段寻找数组中非零元素序号
ii=find(w<=20);
subplot(313);
plot(w(ii),Ya(ii))
xlabel('\omega');
ylabel('局部放大频谱F(\omega)');
grid
%设x(n)=(-0.95)^n(-5<=n<=5)
%求其频谱,画出序列图形、频谱图、
%序列x(n)的傅里叶变换
n=-5:5;x=(-0.95).^n;
subplot(311);stem(n,x);
title('序列x(n)的图形');
xlabel('n');ylabel('x(n)')
k=-200:200;
w=(pi/100)*k; %横坐标(频率轴)的示值缩小比例系数
X=x*(exp(-j*pi/100)).^(n'*k);
magX=abs(X);angX=angle(X);
subplot(312);plot(w/pi,magX);grid on;
title('序列x(n)的幅度谱');
axis([-2,2,0,15]);
xlabel('频率\omega');
ylabel('|x|');
subplot(313);plot(w/pi,angX/pi);grid on;
title('序列x(n)的相位谱');
axis([-2,2,-1,1]);
xlabel('频率\omega');
ylabel('\psi/\pi')