医学信号处理 实验指导书(4)

2018-12-27 15:45

x1n=exp(j*pi*n/8); %产生x1(n)

X1k=fft(x1n,N); %计算N点DFT[x1(n)] X2k=fft(x1n,N1); %计算N1点DFT[x1(n)] x2n=cos(pi*n/8); %产生x2(n)

X3k=fft(x2n,N); %计算N点DFT[x2(n)] X4k=fft(x2n,N1); %计算N1点DFT[x2(n)]

Subplot(2,2,1);stem(n,abs(X1k),'.');axis([0,20,0,20]);ylabel('|X1(k)|') title('16点的DFT[x1(n)]')

Subplot(2,2,2);stem(n,abs(X3k),'.');axis([0,20,0,20]);ylabel('|X2(k)|') title('16点的DFT[x2(n)]')

Subplot(2,2,3);stem(k,abs(X2k),'.');axis([0,20,0,20]);ylabel('|X1(k)|') title('8点的DFT[x1(n)]')

Subplot(2,2,4);stem(k,abs(X4k),'.');axis([0,20,0,20]);ylabel('|X2(k)|') title('8点的DFT[x2(n)]') 程序运行结果如图5–1所示。

N点离散傅里叶变换的一种物理解释就是X?k?是x?n?以N为周期的周期延拓序列的

~~(k)?X(k)R(k)离散傅里叶级数系数X(k)的主值区间序列,即X。当N?16时, x1(n)N和x2(n)正好分别是ej?n8、cos(?n)的一个周期,所以x1(n)和x2(n)的周期延拓序列就是8j这两个单一频率的正弦序列,其离散傅里叶级数的系数分别如图5–1中的16点的DFT[x1(n)]和16点的DFT[x2(n)]所示。而当N?8时, x1(n)和x2(n)正好分别是e?n8、cos(?n)的8半个周期,所以x1(n)和x2(n)的周期延拓序列就不再是单一频率的正弦序列,而是含有丰富的谐波成分,其离散傅里叶级数的系数与N?16时的差别很大,因此对信号进行谱分析的时候,一定要截取整个周期,否则得到错误的频谱。

16点的DFT[x1(n)]2015201516点的DFT[x2(n)]|X1(k)|1050|X2(k)|051015201050051015208点的DFT[x1(n)]201520158点的DFT[x2(n)]|X1(k)|105005101520|X2(k)|105005101520

图5–1 基本序列的离散傅里叶变换

3.MATLAB验证N点DFT的物理意义

?j4?1?e????(e)?FT[x(n)]??例5–2: 已知x,Xn?Rn4?,绘制相应的幅频和相频曲

1?ejj?线,并计算图示N?8和N?16时的DFT。 解:程序清单如下:

clear all;close all;

N1=8;N2=16; % 两种FFT的变换长度 n=0:N1-1;k1=0:N1-1; k2=0:N2-1; w=2*pi*(0:2047)/2048;

Xw=(1-exp(-j*4*w))./( 1-exp(-j*w));

%对x(n)的频谱函数采样2048个点可以近似的看作是连续的频谱 xn=[(n>=0)&(n<4)]; %产生x(n)

X1k=fft(xn,N1); %计算N1=8点的X1(k) X2k=fft(xn,N2); %计算N2=16点的X2(k) subplot(3,2,1);plot(w/pi,abs(Xw));xlabel('w/')

subplot(3,2,2);plot(w/pi,angle(Xw));axis([0,2,-pi,pi]);line([0,2],[0,0]);xlabel('w/π') subplot(3,2,3);stem(k1,abs(X1k),'.');xlabel('k(ω=2πk/N1)');ylabel('|X1(k)|');hold on plot(N1/2*w/pi,abs(Xw)) %图形上叠加连续频谱的幅度曲线 subplot(3,2,4);stem(k1,angle(X1k));axis([0,N1,-pi,pi]);line([0,N1],[0,0]); xlabel('k(ω=2πk/N1)') ;ylabel('Arg[X1(k)]');hold on

plot(N1/2*w/pi,angle(Xw)) %图形上叠加连续频谱的相位曲线 subplot(3,2,5);stem(k2,abs(X2k),'.');xlabel('k(ω=2πk/N2)');ylabel('|X2(k)|');hold on plot(N2/2*w/pi,abs(Xw))

subplot(3,2,6);stem(k2,angle(X2k),'.');axis([0,N2,-pi,pi]);line([0,N2],[0,0]); xlabel('k(ω=2πk/N2)') ;ylabel('Arg[X2(k)]');hold on plot(N2/2*w/pi,angle(Xw))

程序运行结果如图5–2所示。

42020-200.51w/π1.5200.51w/π1.52420Arg[X1(k)]0246k(ω=2πk/N1)8|X1(k)|20-20246k(ω=2πk/N1)8420Arg[X2(k)]051015k(ω=2πk/N2)2020-20510k(ω=2πk/N2)15|X2(k)|

图5–2 离散傅里叶变换和傅里叶变换的采样关系

序列x?n?的N点DFT的物理意义是对X(ej?)在[0,2π]上进行N点的等间隔采样。图5–2可以直观的看到X?k?与X(e)之间的采样关系。

j?注意:用DFT(或FFT)对模拟信号分析频谱时,最好将X?k?的自变量k换算成对应的模拟频率fk,作为横坐标绘图,便于观察频谱。这样,不管变换区间N取信号周期的几倍,画出的频谱图中有效离散谐波谱线所在的频率值不变。变换公式如下式:

fk?三、实验内容

Fs11k?k?k, k?0,1,2,?,N?1 NNTTp1.设x?n??R6(n),用MATLAB程序计算N取不同长度(8,32,64)时x?n?的离散傅里叶变换,画图并分析三种情况下异同,并分析原因。

?n?1,0?n?3?2.对以下序列进行谱分析x1(n)??8?n,4?n?7?0,其它n??4?n,0?n?3?x2(n)??n?3,4?n?7

?0,其它n? 选择FFT的变换区间N为8和16 两种情况进行频谱分析。分别画出幅频特性曲线。

并进行对比、分析和讨论。

n,x5(n)?cos(?n/4)?cos(?n/8) ,选择4FFT的变换区间N为8和16 两种情况分别对以上序列进行频谱分析。分别画出其幅频特性曲线。并进行对比、分析和讨论。

3.对以下周期序列进行谱分析x4(n)?cos4.设x(n)?cos(0.48?n)?cos(0.52?n) (1)取0?n?9,求X1?k?;

(2)将(1)中的x?n?补零加长到0?n?99,求X2?k?; (3)增加采样值的个数,取0?n?99,求X3?k?;

(4)要求画出(1)(2)(3)中的时域和频域序列图,分析频域序列之间区别,并分析原因。

?四、实验要求

1.在实验报告中写出完整的自编程序,并给出实验结果。要求自编实验程序不能只采用两

种方法中的一种。

2.实验结果用图像打印显示,结果分析要详细。

3.在绘制图形时要求图形的完整性,每个图形都要有图标标示。 4.在绘制图形时,坐标最好要一致,以方便对比。

五、思考题

1.对于周期序列,如果周期不知道,如何用FFT进行谱分析? 2.如何选择FFT的变换区间?(包括非周期信号和周期信号)

实验6 序列的离散傅里叶变换(DFT)的应用

一、实验目的

1.加深对序列离散傅里叶变换的理解

2.掌握使用MATLAB实现卷积的两种方法

3.掌握使用MATLAB对连续时间信号进行频谱分析

二.实验方法和示例

1.MATLAB实现快速卷积

例6–1:用快速卷积法计算x(n)?sin(0.4n)R15(n),h(n)?0.9R20(n)两个序列的卷积。 快速卷积计算原理框图如图6–1所示。

x(n) L点的FFT L点 IDFT h(n) L点的FFT y(n) n

图6–1 快速卷积计算原理框图

解:程序清单如下:

M=15;N=20;nx=1:15;nh=1:20; xn=sin(0.4*nx);hn=0.9.^nh;

L=pow2(nextpow2(M+N-1));%L变为2的整数次幂 Xk=fft(xn,L); Hk= fft(hn,L); Yk=Xk.*Hk;

yn=ifft(Yk,L);ny=1:L

subplot(3,1,1);stem(nx,xn,'.');title('x(n)'); subplot(3,1,2);stem(nh,hn,'.');title('h(n)');

subplot(3,1,3);stem(ny,real(yn),'.');title('y(n)'); 程序运行结果如图6–2所示。

x(n)10-110.5050-505h(n)10150246810y(n)1214161820010203040506070

图6–2 x(n),h(n)及其线性卷积波形

若N和M分别是x(n)和h(n)的长度,FFT的变换长度L必须满足L?N?M?1,输出y(n)才等于x(n)和h(n)的线性卷积。计算两个序列的卷积时,也可以直接调用函数conv来计算,因为MATLAB中的计时比较粗糙,所以只有当N和M较大的时候,才能比较两种方法的执行时间快慢。

2.MATLAB实现用DFT对连续信号作谱分析

例6–2:设xa(t)?cos(200?t)?sin(100?t)?cos(50?t),用DFT分析xa(t)的频谱结构,选择不同的截取长度TP,观察存在的截断效应。

T?1fs;选取的参数:(1)采样频率fs?400Hz,(2) 采样信号序列x?n??xa?nT?w?n?,

w?n?是窗函数,选取矩形窗为窗函数:函数w?n??RN?n?;(3)对x(n)作2048点DFT作

为xa(t)的近似连续频谱Xa?jf?。其中N为采样点数,N?fs?Tp,Tp为截取时间长度,

取三种长度:0.04s、4?0.04s、8?0.04s。 解:程序清单如下:

fs=400;T=1/fs; %采样频率和采样间隔 Tp=0.04;N=Tp*fs; %采样点数N

N1=[N,4*N,8*N]; %设定三种截取长度 for m=1:3

n=1:N1(m);

xn=cos(200*pi*n*T)+ sin(100*pi*n*T)+ cos(50*pi*n*T); Xk=fft(xn,4096); fk=[0:4095]/4096/T;

subplot(3,1,m);plot(fk,abs(Xk)/max(abs(Xk)));

if m==1 title('时域截取长度为0.04s的信号的幅频特性');end if m==2 title('时域截取长度为4*0.04s的信号的幅频特性');end if m==3 title('时域截取长度为8*0.04s的信号的幅频特性');end end

程序运行结果如图6–3所示。

时域截取长度为0.04s的信号的幅频特性10.5010.5010.50050100150200250300350400时域截取长度为4*0.04s的信号的幅频特性050100150200250300350400时域截取长度为8*0.04s的信号的幅频特性050100150200250300350400


医学信号处理 实验指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版六年级上册语文全册教案(带三维目标和反思)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: