概述
实验四 用 FFT 进行谱分析
【实例 4-1】对 x3 做 8 点 FFT,绘制出离散幅度谱。
Matlab 参考代码如下:
N=8;x=[4:-1:1 1:4];x a ( t )x ( n ) xk=fft(x,N);figure;subplot(211); stem(0:length(x)-1,x,’.’);title(‘x3 的波形 ’) ;subplot(212);stem(0:N-1,abs(xk),’.’);title(‘x3 的 8 点离散幅度谱 ’) ;
1.编写 Matlab M 文件对信号 x1 (n) 做 8 点和 16 点的 FFT
%1
x1=[1 1 1 1];
N1=8;
N2=16;figure(1);
subplot(2,1,1);
stem(0:3,x1,'.')
title('x1波形图');
subplot(2,1,2);
xk1=fft(x1,N1);
stem(0:N1-1,abs(xk1),'.');
title('x1的8点离散幅度谱');
figure(2);
subplot(2,1,1);
stem(0:3,x1,'.');
title('x1波形图');
subplot(2,1,2);
xk2=fft(x1,N2);
stem(0:N2-1,abs(xk2),'.');
title('x1的16点离散幅度谱');
%2
x2=[1:4 4:-1:1];
N1=8;
N2=16;figure(1);
subplot(2,1,1);
stem(0:7,x2,'.')
title('x2波形图');
subplot(2,1,2);
xk1=fft(x2,N1);
stem(0:N1-1,abs(xk1),'.');
title('x2的8点离散幅度谱');
figure(2);
subplot(2,1,1);
stem(0:7,x2,'.');
title('x2波形图');
subplot(2,1,2);
xk2=fft(x2,N2);
stem(0:N2-1,abs(xk2),'.');
title('x2的16点离散幅度谱');
%3
n=0:15;
x4=cos(pi/4.*n);
N1=8;
N2=16;figure(1);
subplot(2,1,1);
stem(n,x4,'.')
title('x2波形图');
subplot(2,1,2);
xk1=fft(x4,N1);
stem(0:N1-1,abs(xk1),'.');
title('x2的8点离散幅度谱');
figure(2);
subplot(2,1,1);
stem(n,x4,'.');
title('x2波形图');
subplot(2,1,2);
xk2=fft(x4,N2);
stem(0:N2-1,abs(xk2),'.');
title('x2的16点离散幅度谱');
%4 时域周期 频域离散 时域非周期 频域连续 连续无法处理 故截取时要整数倍周期
fs=64;
T = 1/fs;
N1 = 16;
N2 = 32;
N3 = 64;
n = 0:39;
x6= cos(8*pi.*n*T)+cos(16*pi.*n*T)+cos(20*pi.*n*T);
figure(1);
subplot(2,1,1);
stem(n,x6,'.');
title('x6的波形');
subplot(2,1,2);
xk1 = fft(x6,N1);
stem(0:2*pi/N1:2*pi-2*pi/N1,abs(xk1),'.');%这里横坐标采用w 通过DTFT 和 DFT公式可以推出两者间的关系
title('x6的16点fft');figure(2);
subplot(2,1,1);
stem(n,x6,'.');
title('x6的波形');
subplot(2,1,2);
xk2 = fft(x6,N2);
stem(0:2*pi/N2:2*pi-2*pi/N2,abs(xk2),'.');
title('x6的32点FFT');
xlabel('w');figure(3);
subplot(2,1,1);
stem(n,x6,'.');
title('x6的波形');
subplot(2,1,2);
xk3 = fft(x6,N3);
stem(0:2*pi/N3:2*pi-2*pi/N3,abs(xk3),'.');
title('x6的64点FFT');
xlabel('w');
clear;
clc;[xn, fs] = audioread('motherland.wav');
x = xn(8000:8199,1);
N = 512;
xk = fft(x,N);figure(1)
subplot(2,1,1);
stem(0:199,x,'.');
title('200个采样点的波形');
subplot(2,1,2);
stem(0:N-1,abs(xk),'.');
title('512点FFT');figure(2)
h1 = abs(xk);
h2= angle(xk);
subplot(2,1,1);
plot(0:N-1,h1);
title('连续幅度谱');
subplot(2,1,2);
plot(0:N-1,h2);
title('连续相位谱');
A = imread('lena.bmp'); % 读原图
figure(1);
imshow(A);
title('原图')
fftI = fft2(A); % 二维离散傅里叶变换
A1 = abs(fftI); % 取模值
% 把幅度限定在[0,255]
B1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*255;
figure(2)
imshow(B1); title('二维幅度谱图');
B= fftshift(B1);
figure(3)
imshow(B);
title('移到中心位置的二维频谱图');
可以看出同一序列不同点DFT幅度谱是不同的。周期函数选取不同周期也会得到不同的图像
关于思考题 x2(n)与x3(n)八点DFT,十六点DFT情况
最后
以上就是灵巧项链为你收集整理的matlab 数字信号处理 (4) 用FFT进行谱分析的全部内容,希望文章能够帮你解决matlab 数字信号处理 (4) 用FFT进行谱分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复