数字信号处理实验二

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二: 用FFT 作谱分析

实验目的

(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。

(2) 熟悉FFT 算法原理和FFT 子程序的应用。

(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及其原因, 以便在实际中正确应用FFT 。

● 实验步骤

(1) 复习DFT 的定义、 性质和用DFT 作谱分析的有关内容。

(2) 复习FFT 算法原理与编程思想, 并对照DIT-FFT 运算流图和程序框图, 读懂本实验提供的FFT 子程序。

(3) 编制信号产生子程序, 产生以下典型信号供谱分析用:

(4) 编写主程序。

下图给出了主程序框图, 供参考。 本实验提供FFT 子程序和通用绘图子程序。

(5) 按实验内容要求, 上机实验, 并写出实验报告。

1423()()1,03()8470

403()3470x n R n n n x n n n n n x n n n =⎧+≤≤⎪=-≤≤⎨⎪⎩-≤≤⎧⎪=-≤≤⎨⎪⎩456()cos 4()sin 8()cos8cos16cos20x n n x n n x n t t t πππππ===++

●实验内容

(1) 对2 中所给出的信号逐个进行谱分析。

(2) 令x(n)=x4(n)+x5(n),用FFT计算8 点和16 点离散傅里叶变换,

X(k)=DFT[x(n)]

(3) 令x(n)=x4(n)+jx5(n),重复(2)。

●实验报告要求

(1) 简述实验原理及目的。

(2) 结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。

(3) 总结实验所得主要结论。

(4) 简要回答思考题。

Matlab代码:

对六个所给信号进行谱分析的主程序(对信号进行64点的FFT变换):

clc;clear all;

N=64;

x1=Signal_x1(N);

myfft(x1);

x2=Signal_x2(N);

myfft(x2);

x3=Signal_x3(N);

myfft(x3);

x4=Signal_x4(N);

myfft(x4);

x5=Signal_x5(N);

myfft(x5);

x6=Signal_x6(N);

myfft(x6);

编写的画序列、对序列进行FFT变换及画其频谱的函数:function Y=myfft(X)

L=length(X);

n=0:L-1;

figure;

stem(n,X);%»-³öÐźÅÐòÁÐ

Y=fft(X);

figure;

stem(n,abs(Y));%»-³öÐźŵÄFFT±ä»»µÃµ½µÄX(k)ÐòÁÐ

编写的六个信号产生子程序:

信号1:

function X=Signal_x1(n)

X=zeros(1,n);

X(1:4)=1;

信号2:

function X=Signal_x2(n)

X=zeros(1,n);

for i=0:3

X(i+1)=i+1;

end

for i=4:7

X(i+1)=8-i;

end

信号3:

function X=Signal_x3(n)

X=zeros(1,n);

for i=0:3

X(i+1)=4-i;

end

for i=4:7

X(i+1)=i-3;

end

信号4:

function X=Signal_x4(N)

n=0:N-1;

X=zeros(1,n);

X=cos(pi/4*n);

信号5:

function X=Signal_x5(N)

n=0:N-1;

X=zeros(1,n);

X=sin(pi/8*n);

信号6:

function X=Signal_x6(N)

n=0:N-1;

X=zeros(1,n);

X=cos(pi*8*n)+cos(pi*16*n)+cos(pi*20*n);

对x(n)=x4(n)+x5(n)进行8点和16点的FFT变换程序:8点:

clc;clear all;

N=8;

x=Signal_x4(N)+Signal_x5(N);

myfft(x);

16点:

clc;clear all;

N=16;

x=Signal_x4(N)+Signal_x5(N);

myfft(x);

对x(n)=x4(n)+jx5(n)进行8点和16点的FFT变换程序:

8点:

clc;clear all;

N=8;

x=Signal_x4(N)+j*Signal_x5(N); myfft(x);

16点:

clc;clear all;

N=16;

x=Signal_x4(N)+j*Signal_x5(N); myfft(x);

相关文档
最新文档