当前位置:文档之家› 数字信号处理实验

数字信号处理实验

数字信号处理实验
数字信号处理实验

实验报告

学院实验室

二〇一五年月日

实验一:FFT作谱分析

一、实验目的:

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

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

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

二、实验原理:

1,快速傅立叶变换(fft)算法

长度为n的序列x(n)的离散傅立叶变换x(k)为:

N点的DFT可以分解为两个N/2点的DFT,每个N/2点的DFT有可以分解为两个N/4点的DFT,依次类推,当N为2的整数次幂N=2^m,由于分解依次降低一阶幂次,所以通过M次分解,最后全部成为一系列2点的DFT运算,以上就是按时间抽取的快速傅立叶变化(FFT)算法,当需要进行变化的序列长度不是2的整数次方的时候,为了使用以2为基的FFT,可以用末尾补零的方法,使其长度延至2的整数次方。

序列x(k)的离散傅立叶反变换为:

离散傅立叶反变换与正变换区别在于Wn变为并多了一个1/N,对于按时间抽取的快速傅立叶变换算法并无实质区别,因此将反变换算法合并在同一个程序

2、利用FFT进行频谱分析

若信号本身是有限长的序列,计算序列就是直接对序列进行FFT运算求得x(k),x(k)就代表序列在[0,2π]之间的频谱值

三、实验器材

微型计算机,实验箱

四、实验程序:

#include"DSP2833x_Device.h"

#include"DSP2833x_Examples.h"

#include

#define pi 3.141593 // float小数点后6位

#define NL 256 // NL与N的值必须是一致的,即NL=N

int N=256;

float hn[64]={0};//滤波系数补32个零后存放

float SampleTable[NL];//实数信号序列

//窗函数类型:汉宁窗,32阶低通

//截止频率:500Hz

//采样频率:12800Hz

float h[32]=

{

0,0.0006485134778915, 0.002574789225444, 0.005709506486408,

0.009931872420821, 0.01507448912514, 0.02093024026384,

0.02726090869226,

0.03380715986684, 0.04029946500149, 0.04646949558203,

0.05206149892494,

0.05684316398774, 0.06061550768029, 0.06322135360436,

0.06455203566049,

0.06455203566049, 0.06322135360436, 0.06061550768029,

0.05684316398774,

0.05206149892494, 0.04646949558203, 0.04029946500149,

0.03380715986684,

0.02726090869226, 0.02093024026384, 0.01507448912514,

0.009931872420821,

0.005709506486408, 0.002574789225444,0.0006485134778915, 0 };

struct Complex // 定义复数结构体

{

float real,imag;

};

struct Complex Wn;//定义旋转因子

struct Complex Vn;//每一级第一个旋转因子虚部为0,实部为1

struct Complex T;//存放旋转因子与X(k+B)的乘积

//float Realin[NL]={0.0};// AD采样输入的实数

float output[NL];// 输出的FFT幅值(复数的模)

struct Complex Sample[NL];// AD采样输入的实数转化为复数

struct Complex H[64];// 补零后h(n)存放的复数数组

struct Complex Y[64];

struct Complex X[64];

float Result[288];//

struct Complex MUL(struct Complex a,struct Complex b)//定义复乘{

struct Complex c;

c.real=a.real*b.real-a.imag*b.imag;

c.imag=a.real*b.imag+a.imag*b.real;

return(c);

}

void MYFFT(struct Complex *xin,int N)

{

int L=0; // 级间运算层

int J=0; // 级内运算层

int K=0,KB=0; // 蝶形运算层

int M=1,Nn=0;// N=2^M

float B=0; // 蝶形运算两输入数据间隔

/* 以下是为倒序新建的局部变量*/

int LH=0,J2=0,N1=0,I,K2=0;

struct Complex T;

/*以下是倒序*/

LH=N/2; // LH=N/2

J2=LH;

N1=N-2;

for(I=1;I<=N1;I++)

{

if(I

{

T=xin[I];

xin[I]=xin[J2];

xin[J2]=T;

}

K2=LH;

while(J2>=K2)

{

J2-=K2;

K2=K2/2;// K2=K2/2

}

J2+=K2;

}

/* 以下为计算出M */

Nn=N;

while(Nn!=2)// 计算出N的以2为底数的幂M

{

M++;

Nn=Nn/2;

}

/* 蝶形运算 */

for(L=1;L<=M;L++) // 级间

{

B=pow(2,(L-1));

Vn.real=1;

Vn.imag=0;

Wn.real=cos(pi/B);

Wn.imag=-sin(pi/B);

for(J=0;J

{

for(K=J;K

{

KB=K+B;

T=MUL(xin[KB],Vn);

xin[KB].real=xin[K].real-T.real;

xin[KB].imag=xin[K].imag-T.imag;

xin[K].real=xin[K].real+T.real;

xin[K].imag=xin[K].imag+T.imag;

}

Vn=MUL(Wn,Vn);// 旋转因子做复乘相当于指数相加,得到的结果

// 和J*2^(M-L)是一样的,因为在蝶形因子运算

// 层中M与L都是不变的,唯一变x化的是级内的J

// 而且J是以1为步长的,如J*W等效于W+W+W...J个W相加

}

}

}

/*

void FilterDC(struct Complex *ADC,int N)//去除数据中的直流成分,否则直流分量将很大

{

int i;

float sum=0;

for(i=0;i

{ sum+=ADC[i].real;}

sum=sum/N;

for(i=0;i

{ ADC[i].real-=sum;}

}*/

void ModelComplex(struct Complex *xin,int N,float *out_put)

{

int i;

for(i=0;i

{

out_put[i]=sqrt(xin[i].real*xin[i].real+xin[i].imag*xin[i].imag)*2/N;

}

}

void main(void)

{

int counter,i=0,j=0,k=0,full=0,mid0=0,mid1=0,qt=0;

InitSysCtrl();

DINT;

InitPieCtrl();

IER = 0x0000;

IFR = 0x0000;

for(counter=0;counter<32;counter++)// 对h(n)从实数变成复数,并且补零

{

X[counter].real=0;// X[64]初始化

X[counter].imag=0;

X[counter+32].real=0;// X[64]初始化

X[counter+32].imag=0;

H[counter].imag=0;

H[counter].real=h[counter];// 前32点与h[32]一样

H[counter+32].real=0;// 后32点为0

H[counter+32].imag=0;

}

MYFFT(H,64);// 完成补零后h(n)的FFT

ModelComplex(H,64,hn);// h(n)的频谱hn

//可以观察到滤波器的频谱

for(counter=0;counter<288;counter++)//输出信号初始化

{

Result[counter]=0;

if(counter

{ output[counter]=0; }

}

for(i=0;i

{

SampleTable[i]=sin(2*pi*5*i/(NL-1))+sin(2*pi*i*5*3/(NL-1))/3+sin(2*pi*i*5*5 /(NL-1))/5;

Sample[i].real=SampleTable[i];//实数转复数

Sample[i].imag=0;

// DELAY_US(10);

}

for(i=0;i<8;i++)

{

for(j=0;j<32;j++)// 取得512点采样的分段L=32,后32点为0

{

X[j].real=Sample[full].real;//h[j];// 在初始化时X[64]已经全赋值0 full++;

}

MYFFT(X,64);// 分段后的64点采样FFT

for(k=0;k<64;k++) // 64点的X与H相乘

{

Y[k]=MUL(X[k],H[k]);

X[k].real=0;

X[k].imag=0;

}

/***************************

以下做逆FFT(IFFT)

****************************/

for(counter=0;counter<64;counter++)// 得到X(k)的共轭

{

Y[counter].real=Y[counter].real;

Y[counter].imag=-Y[counter].imag;

}

MYFFT(Y,64);// 共轭的FFT

for(counter=0;counter<64;counter++)// 得到共轭X(k)的共轭

{

Y[counter].imag=-Y[counter].imag;

}

for(counter=0;counter<64;counter++)// 除以N

{

Y[counter].real=Y[counter].real/64;

Y[counter].imag=Y[counter].imag/64;

if(fabs(Y[counter].imag)<=0.00001)

{ Y[counter].imag=0; }

}

Y[0].real=0;

Y[0].imag=0;

Y[1].real=0;

Y[1].imag=0;

ModelComplex(Y,64,output);// 取复数的模

for(qt=0;qt<64;qt++)// 取模后全为正数,需要恢复原来的负数

{

if(Y[qt].real<0)

{ output[qt]=-output[qt]; }// output中存放着IFFT的实数结果 } // IFFT 结束

qt=0;

mid0=i*32;

mid1=mid0+64;

for(counter=mid0;counter

{

if(mid0==0)

{

Result[counter]=output[qt];

}// counter达到543,但output只在前64中

else

{ Result[counter]+=output[qt]; }// 所以需要设qt来表示output数组里的

qt++;

}

qt=0;

counter=0;

}

while(1)

{

五、实验的波形

观察到当代码为:

MYFFT(H,64);// 完成补零后h(n)的FFT

ModelComplex(H,64,hn);// h(n)的频谱hn

//可以观察到滤波器的频谱

波形如下:

分析:因为W=2Πf/F, 有因为F>=2f,所以w=[0,π],所以判断出h(n)为低通滤波器

因为代码:

SampleTable[i]=sin(2*pi*5*i/(NL-1))+sin(2*pi*i*5*3/(NL-1))/3+sin(2*pi*i*5*5 /(NL-1))/5;

三个波形的幅度谱如图:

三个波形的频谱如图:

有因为代码:

#define pi 3.141593 // float小数点后6位

#define NL 256 // NL与N的值必须是一致的,即NL=N int N=256;

//截止频率:500Hz

//采样频率:12800Hz

SampleTable[i]=sin(2*pi*5*i/(NL-1))+sin(2*pi*i*5*3/(NL-1))/3+sin(2*pi*i*5*5 /(NL-1))/5;

可以算出Wc截至频率对应的点数是2.5

因为W3=5W1,W2=3W1

有因为64个点对应一个圆周2π,所以第一个波形w1是2*pi*5/(nl-1)带入pi 和nl,算出对于点数为1.25,即w1=1.25

有因为W2=3W1所以带入算的结果为3.76 ,即W2=3.76

W3=5W1,所以带入算的结果为6.27,即W3=6.27

所以各点对应的波形图的位置如下图:

做逆FFT(IFFT)后的输出结果如下波形:

分析:因为通过低通滤波器后,在截至频率之间的信号被还原出来,如上可知频率为W1的信号被还原出来,其他信号被滤去。

实验二:FIR数字滤波器设计与软件实现

一、实验目的

(1)掌握用窗函数设计FIR数字滤波器的原理和方法;

(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理与方法;(3)掌握FIR滤波器的快速卷积实现原理;

(4)学会调用MATLAB函数设计与实现FIR滤波器。

二、实验原理

(1)窗函数法设计FIR数字滤波器的原理;

将模拟频率转化为数字频率,设取样时间为T(要满足抽样定理)Ωp=2π*fp*T

Ωs=2π*fs*T

过渡带宽度△Ω=Ωp-Ωs

(2)等波纹最佳逼近法设计FIR数字滤波器的原理.

1.MATLAB函数fir1的功能及其调用格式请查阅教材;

2.采样频率Fs=1000Hz,采样周期T=1/Fs;

3.根据图1(b)和实验要求,可选择滤波器指标参数:通带截止频率fp=120Hz,阻带截至频率fs=150Hz,换算成数字频率,通带截止频率,通带最大衰为0.1dB,阻带截至频率,阻带最小衰为60dB。

三、实验器材

计算机与实验箱

四、实验程序

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File

#include "DSP2833x_Examples.h" // DSP2833x Examples Include File

#include "math.h"

#define pi 3.14159

#define a 256 //合成信号的采样点数

#define b 32 //h(n)的序列长度

#define c a+b-1 //y(n)的序列长度=a+b-1

//Uint16 Input[256];

float Sample[a]; //采样后的信号序列

float y1[c]; //输出序列

//窗函数类型:汉宁窗,32阶低通

//截止频率:500Hz

//采样频率:128000Hz

float h[b]=

{

0,0.0006485134778915, 0.002574789225444, 0.005709506486408,

0.009931872420821, 0.01507448912514, 0.02093024026384, 0.02726090869226,

0.03380715986684, 0.04029946500149, 0.04646949558203, 0.05206149892494,

0.05684316398774, 0.06061550768029, 0.06322135360436, 0.06455203566049,

0.06455203566049, 0.06322135360436, 0.06061550768029, 0.05684316398774,

0.05206149892494, 0.04646949558203, 0.04029946500149, 0.03380715986684,

0.02726090869226, 0.02093024026384, 0.01507448912514, 0.009931872420821,

0.005709506486408, 0.002574789225444,0.0006485134778915, 0

};

/*============================================================= 功能:实现离散线性卷积

算法原理:对位相乘求和法实现卷积

形参:xn(*x所指向的数组长度)、hn(*h所指向的数组长度)为参与运算的两个卷积序列数组长度

*x、*h为指向两个数组的指针

*y指向输出序列的数组

注意:输出序列长度为xn+hn-1;存放内容为输出数组的0~(xn+hn-2)。另外,该函数实现的无符号整型的卷积运算,如果要实现浮点型,需要将形参的Uint16 hn,Uint16 *x,Uint16 *h,Uint16 *y的Uint16数据格式

改为float或者double型

==============================================================*/ void LinearConvolution(Uint16 xn,Uint16 hn,float *x,float *h,float *y)

{

Uint16 i,j,k,l;

Uint16 yn; //输出序列y的长度

yn=xn+hn-1;

for(i=0;i

k=yn-1;

for(i=hn-1;i>0;i--) //将*h作为被乘数

{

l=k;

for(j=xn-1;j>0;j--) //数组x[n]的1~(xn-1)与h[i]逐一相乘

{

y[l]+=h[i]*x[j];

l--;

}

y[l]+=x[0]*h[i];

k--;

}

l=k;

for(j=xn-1;j>0;j--)

{

y[l]+=h[0]*x[j];

l--;

}

y[l]+=x[0]*h[0];

}

void main(void)

{

Uint16 i;

InitSysCtrl();

InitPieCtrl();

IER = 0x0000;

IFR = 0x0000;

for(i=0;i

{

Sample[i]=511*(sin(2*pi*5*i/(a-1))+sin(2*pi*i*5*3/(a-1))/3+sin(2*pi*i*5*5/(a-1))/5) +512;

// DELAY_US(10);

}

LinearConvolution(a,b,Sample,h,y1);//线性卷积

while(1)

{

//

sample=sin(2*pi*5*n/(N-1))+sin(2*pi*15*n/(N-1))/3+sin(2*pi*25*n/(N-1))/5;

/* dly[0]=sample;

yn=0;

for(i=0;i

for(i=N-1;i>0;i--) dly[i]=dly[i-1];

output[n]=yn;

if(n==(N-1)) n=0;

else n++;*/

}

}

//=================================================================== ========

// No more.

//=================================================================== ========

五、实验结果

1.实验波形图参数设置要求

(1)Sample频域图:

(2)Sample时域图

(3)Y1频域图:

(4)Y1时域图1:

(5)Y1时域图2:

(6)Y1时域图3:

实验三:IIR数字滤波器设计与软件实现

一、实验目的:

(1)掌握用双线性变换法设计IIR数字滤波器的原理和方法;

(2)学会调用MATLAB信号处理工具箱中滤波器设计函数;

(3)掌握IIR滤波器的MATLAB实现方法;

(4)观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。

二、实验原理:

设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:

(1)先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;

(2)设计过渡模拟滤波器;

(3)将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。

三、实验器材

计算机与实验箱

四、实验程序:

○1function st=mstg

N=800

Fs=10000;T=1/Fs;Tp=N*T;

t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;

fc1=Fs/10;

fm1=fc1/10;

fc2=Fs/20;

fm2=fc2/10;

fc3=Fs/40;

fm3=fc3/10;

xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);

xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);

xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);

st=xt1+xt2+xt3;

fxt=fft(st,N);

subplot(3,1,1)

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp/8,min(st),max(st)]);title('(a)?s(t)μ?2¨D?')

subplot(3,1,2)

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)?s(t)μ??μ?×') axis([0,Fs/5,0,1.2]);

xlabel('f/Hz');ylabel('·ù?è')

fp=280;fs=450;

wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60;

[N,wp]=ellipord(wp,ws,rp,rs);

[B,A]=ellip(N,rp,rs,wp);

y1t=filter(B,A,st);

figure(2);subplot(3,1,1);

myplot(B,A);

yt='y_1(t)';

subplot(3,1,2);

tplot(y1t,T,yt);

○2Functionmyplot(B,A)

%时域离散系统损耗函数绘图

%B为系统函数分子多项式系数向量

%A为系统函数分母多项式系数向量

[H,W]=freqz(B,A,1000);

m=abs(H);

plot(W/pi,20*log10(m/max(m)));grid on;

xlabel('\omega/\pi');ylabel('幅度(dB)')

axis([0,1,-80,5]);title('损耗函数曲线');

○3Functiontplot(xn,T,yn)

%时域序列连续曲线绘图函数

% xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串)

% T为采样间隔

n=0:length(xn)-1;t=n*T;

plot(t,xn);

xlabel('t/s');ylabel(yn);

axis([0,t(end),min(xn),1.2*max(xn)])

○4clearall;close all

Fs=10000;T=1/Fs; %采样频率

%调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st

st=mstg;

%低通滤波器设计与实现=========================================

fp=280;fs=450;

wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)

数字信号处理实验二报告

实验二 IIR数字滤波器设计及软件实现 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 2.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤 (1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。 图1 三路调幅信号st的时域波形和幅频特性曲线 (2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为

数字信号处理实验一

实验一 离散时间信号分析 班级 信息131班 学号 201312030103 姓名 陈娇 日期 一、实验目的 掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为+∞<<∞-n 的整数,n 取其它值)(n x 没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t x a 进行等间隔采样,采样间隔为T ,得到)}({nT x a 一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)) (n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 ∑∞ -∞==-= m n h n x m n h m x n y )(*)()()()( 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。

(2)移位:将)(m h -移位n ,得)(m n h -。当n 为正数时,右移n 位;当n 为负数时,左移n 位。 (3)相乘:将)(m n h -和)(m x 的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得)(n y 。 三、主要实验仪器及材料 微型计算机、Matlab6.5 教学版、TC 编程环境。 四、实验内容 (1)用Matlab 或C 语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序; (2)画出两个序列运算以后的图形; (3)对结果进行分析; (4)完成实验报告。 五、实验结果 六、实验总结

《数字信号处理》课程研究性学习报告解读

《数字信号处理》课程研究性学习报告 指导教师薛健 时间2014.6

【目的】 (1) 掌握IIR 和FIR 数字滤波器的设计和应用; (2) 掌握多速率信号处理中的基本概念和方法 ; (3) 学会用Matlab 计算小波分解和重建。 (4)了解小波压缩和去噪的基本原理和方法。 【研讨题目】 一、 (1)播放音频信号 yourn.wav ,确定信号的抽样频率,计算信号的频谱,确定噪声信号的频率范围; (2)设计IIR 数字滤波器,滤除音频信号中的噪声。通过实验研究s P ,ΩΩ,s P ,A A 的选择对滤波效果及滤波器阶数的影响,给出滤波器指标选择的基本原则,确定你认为最合适的滤波器指标。 (3)设计FIR 数字滤波器,滤除音频信号中的噪声。与(2)中的IIR 数字滤波器,从滤波效果、幅度响应、相位响应、滤波器阶数等方面进行比较。 【设计步骤】 【仿真结果】

【结果分析】 由频谱知噪声频率大于3800Hz。FIR和IIR都可以实现滤波,但从听觉上讲,人对于听觉不如对图像(视觉)明感,没必要要求线性相位,因此,综合来看选IIR滤波器好一点,因为在同等要求下,IIR滤波器阶数可以做的很低而FIR滤波器阶数太高,自身线性相位的良好特性在此处用处不大。【自主学习内容】 MATLAB滤波器设计 【阅读文献】 老师课件,教材 【发现问题】(专题研讨或相关知识点学习中发现的问题): 过渡带的宽度会影响滤波器阶数N 【问题探究】 通过实验,但过渡带越宽时,N越小,滤波器阶数越低,过渡带越窄反之。这与理论相符合。 【仿真程序】 信号初步处理部分: [x1,Fs,bits] = wavread('yourn.wav'); sound(x1,Fs); y1=fft(x1,1024); f=Fs*(0:511)/1024; figure(1) plot(x1) title('原始语音信号时域图谱'); xlabel('time n'); ylabel('magnitude n'); figure(2) freqz(x1) title('频率响应图') figure(3) subplot(2,1,1); plot(abs(y1(1:512))) title('原始语音信号FFT频谱') subplot(2,1,2); plot(f,abs(y1(1:512))); title(‘原始语音信号频谱') xlabel('Hz'); ylabel('magnitude'); IIR: fp=2500;fs=3500; wp = 2*pi*fp/FS; ws = 2*pi*fs/FS; Rp=1; Rs=15;

数字信号处理实验二

实验报告(本科) 学号 2015141443002 姓名柏冲 专业通信工程 日期 2017/12/4 实验题目时域采样和频域采样 一、实验目的

时域采样理论与频域采样理论是数字信号处理中重要的理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使得采样后的信号不丢失信息;要求掌握频率采样会引起时域周期化的概念,以及频域采样定理及其对频域采样点数选择的指导作用。 二、实验过程 附:源程序 (1)时域采样 Tp=64/1000; %观察时间Tp=64毫秒 %产生M长采样序列x(n) Fs=1000; T=1/Fs; M=Tp*Fs; n=0:M-1; A=444.128; a=pi*50*2^0.5; omega=pi*50*2^0.5; xnt=A*exp(-a*n*T).*sin(omega*n*T); Xk=T*fft(xnt,M); %M点FFT[(xnt)] subplot(3,2,1); stem(xnt,'.'); %调用编绘图函数stem绘制序列图 box on;title('(a) Fs=1000Hz'); k=0:M-1;fk=k/Tp; subplot(3,2,2);stem(fk,abs(Xk),'.');title('(a) T*FT[xa(nT)],Fs=1000Hz'); xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))]); % Fs=300Hz和 Fs=200Hz的程序与上面Fs=1000Hz完全相同。 Tp=64/1000; %观察时间Tp=64毫秒 %产生M长采样序列x(n) Fs=300; T=1/Fs; M=Tp*Fs; n=0:M-1; A=444.128; a=pi*50*2^0.5; omega=pi*50*2^0.5; xnt=A*exp(-a*n*T).*sin(omega*n*T); M1=fix(M); Xk=T*fft(xnt,M1); %M点FFT[(xnt)] subplot(3,2,3); stem(xnt,'.'); %调用自编绘图函数stem绘制序列图 box on;title('(b) Fs=300Hz'); k=0:M-1;fk=k/Tp; subplot(3,2,4);stem(fk,abs(Xk),'.');title('(b) T*FT[xa(nT)],Fs=300Hz'); xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))]); Tp=64/1000; %观察时间Tp=64毫秒 %产生M长采样序列x(n) Fs=200; T=1/Fs; M=Tp*Fs; n=0:M-1; A=444.128; a=pi*50*2^0.5; omega=pi*50*2^0.5; xnt=A*exp(-a*n*T).*sin(omega*n*T); M2=fix(M);

数字信号处理实验程序2.

2.1 clc close all; n=0:15; p=8;q=2; x=exp(-(n-p.^2/q; figure(1; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=2'; xk1=fft(x,16; q=4; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=8,q=4'; q=8; x=exp(-(n-p.^2/q;

xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';%时域特性figure(2; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=2'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=8,q=4'; subplot(3,1,3; stem(n,abs(xk3; title('exp(-(n-p^2/q,p=8,q=8';%频域特性%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% p=8;q=8; figure(3; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';

xk1=fft(x,16; p=13; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=13,q=8'; p=14; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=14,q=8';%时域特性figure(4; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=8'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=13,q=8'; subplot(3,1,3;

数字信号处理实验

实验一 离散傅里叶变换(DFT )对确定信号进行谱分析 一.实验目的 1.加深对DFT 算法原理和基本性质的理解。 2.熟悉DFT 算法和原理的编程方法。 3.学习用DFT 对信号进行谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确利用。 二.实验原理 一个连续信号)(t x a 的频谱可以用其傅里叶变换表示,即 dt e t x j X t j a a Ω-∞ ∞ -? = Ω)()( 若对)(t x a 进行理想采样可得采样序列 )(|)()(nT x t x n x a nT t a === 对)(n x 进行DTFT ,可得其频谱为: ∑∞ -∞ =-= n n j j e n x e X ωω )()( 其中数字频率ω与模拟频率Ω的关系为: s f T Ω = Ω=ω )(n x 的DFT 为∑∞ -∞ =-= n nk N j e n x k X π 2)()( 若)(t x a 是限带信号,且在满足采样定理的条件下,)(ω j e X 是)(Ωj X a 的周期延拓, )(k X 是)(ωj e X 在单位圆上的等间隔采样值,即k N j e X k X πωω2| )()(= =。 为在计算机上分析计算方便,常用)(k X 来近似)(ω j e X ,这样对于长度为N 的有限 长序列(无限长序列也可用有限长序列来逼近),便可通过DFT 求其离散频谱。 三.实验内容 1.用DFT 对下列序列进行谱分析。 (1))()04.0sin(3)(100n R n n x π=

1 (2)]0,0,0,0,0,0,0,0,1,1,1,1[)(=n x 2.为了说明高密度频谱和高分辨率频谱之间的区别,考察序列 )52.0cos()48.0cos()(n n n x ππ+= (1)当0≤n ≤10时,确定并画出x(n)的离散傅里叶变换。 (2)当0≤n ≤100时,确定并画出x(n)的离散傅里叶变换。 四.实验结果 1. (1) (2)

数字信号处理课程实验报告4

数字信号处理课程实验报告 实验名称FIR数字滤 班级姓名 波器设计 教师姓名实验地点实验日期 一、实验内容 1、设计一个最小阶次的低通FIR数字滤波器,性能指标为:通带0Hz~1500Hz,阻带截 止频率2000Hz,通带波动不大于1%,阻带波动不大于1%,采样频率为8000Hz; 2、用一个仿真信号来验证滤波器的正确性(注意:要满足幅度要求和线性相位特性)。 二、实验目的 1、利用学习到的数字信号处理知识解决实际问题; 2、了解线性相位滤波器的特殊结构; 3、熟悉FIR数字滤波器的设计方法。 三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况) 计算机一台(安装MATLAB6.5版本或以上版本) 四、实验记录(以下1~5项必须完成,第6项为选择性试做) 1.原理基础 令希望设计的滤波器的传输函数是H(ejw,hd(n)是与其对应的单位脉冲响应。一般情况下,由Hd(ejw)求出hd(n),然后由Z变换求出滤波器的系统函数。但是通常Hd(ejw)在边界频率处有不连续点,这使得hd(n)是无限长的非因果序列,所以实际是不能实现的。为了构造一个长度为N的线性相位滤波器,可以将hd(n)截取一段来近似,并且根据线性相位的特点,需要保证截取后的序列关于(N-1)/2对称。设截取的一段为h(n),则 Wr(n)称为矩形窗函数。 当hd(n的对称中心点取值为(N-1)/2时,就可以保证所设计的滤波器具有线性相位。 2 实验流程

1.信号的谱分析 2.信号的采样 3.信号的恢复 3源程序代码 clc; clear all; close all; fs=700;%采样频率 f=[30 40];%截止频率 a=[1 0]; dev=[0.01 0.1]; % dev纹波 [n,fo,ao,w]=remezord(f,a,dev,fs);%n滤波器阶数fo过渡带起止频率ao频带内幅度————firpmord b=remez(n,fo,ao,w);%firpm b=b.*blackman(length(b))'; b=b; a=1; figure(1) % [H,W]=freqz(b,1,1024,Fs); % plot(W,20*log10(abs(H))); freqz(b,1,1024,fs);grid title('滤波器') grid %%%%%%%%%%%%%%%% fc=28; fcl1=50; fcl2=100; fcl3=150; N=1024; n=1:N; % x=2*cos(2*pi*fc/fs*n)+j*2*sin(2*pi*fc/fs*n)+cos(2*pi*fcl/fs*n)+j*sin(2*pi*fcl/fs*n)+1*r and(1,N); xc=2*cos(2*pi*fc/fs*n); x=2*cos(2*pi*fc/fs*n)+2*cos(2*pi*fcl1/fs*n)+2*cos(2*pi*fcl2/fs*n)+0.1*rand(1,N); % x=2*cos(2*pi*fc/fs*n); xfft=abs(fft(x,N));

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验2

实验2 离散时间系统的时域分析 一、实验目的 (1)加深对时域信号抽样与恢复的基本原理的理解; (2)掌握应用线性卷积求解离散时间系统响应的基本方法; (3)掌握求解离散时间系统冲击响应和频率响应程序的编写方法,了解常用子函数。 二、实验内容 1. 已知一个连续时间信号()t f t f t f 006sin 3 12sin ππ+ =,Hz f 10=,取最高有限带宽频率 05f f m =。 分别显示原连续时间信号波形和()() m s m s m s m s m s f f f f f f f f f f =<==>2, 2,32三种情况下抽样信号波形,并尝试用内插公式重建原信号。 脚本文件如下: f0=1; fm=5*f0; t=0:0.01:5; f=sin(2*pi*f0*t)+1/3*sin(6*pi*f0*t); subplot(7,1,1) figure(1) plot(t,f) for i=1:3 fs=i*fm; ts=1/fs; t1=0:ts:5; f1=sin(2*pi*f0*t1)+1/3*sin(6*pi*f0*t1); subplot(7,1,i+1); stem(t1,f1,'filled'); f1i=interp1(t1,f1,ti,'spline'); subplot(7,1,i+4) plot(ti,f1i) end 抽样图像及内插后图像:

2. 在MATLAB 中利用内部函数conv 来计算两个有限长序列的卷积。给出两个序列,试求其卷积结果。 ()[]()[] ()()() n h n x n y n n h n n x *=≤≤-=≤≤--=519,14,11,20,5,7,181 38,6,3,9,5 脚本文件: n1=-3:1; x=[5,9,3,6,-8]; n2=-1:5; h=[18,7,5,20,11,14,9]; n=-4:6; y=conv(x,h); stem(n,y);

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

数字信号处理实验三

实验三:离散LSI 系统的频域分析 一、实验内容 2、求以下各序列的z 变换: 12030() ()sin() ()sin()n an x n na x n n x n e n ωω-=== 程序清单如下: syms w0 n z a; x1=n*a^n;X1=ztrans(x1) x2=sin(w0*n);X2=ztrans(x2) x3= exp(-a*n)*sin(w0*n);X3=ztrans(x3) 程序运行结果如下: X1 =z/(a*(z/a - 1)^2) X2 =(z*sin(w0))/(z^2 - 2*cos(w0)*z + 1) X3 =(z*exp(a)*sin(w0))/(exp(2*a)*z^2 - 2*exp(a)*cos(w0)*z + 1) 3、求下列函数的逆z 变换 0 312342 1 1() () () ()() 1j z z z z X z X z X z X z z a z a z e z ω---= = = = ---- 程序清单如下: syms w0 n z a; X1=z/(z-a);x1=iztrans(X1) X2= z/(a-z)^2;x2=iztrans(X2) X3=z/ z-exp(j*w0);x3=iztrans(X3) X4=(1-z^-3)/(1-z^-1);x4=iztrans(X4) 程序运行结果如下: x1 =a^n x2 =n*a^n/a 课程名称 数字信号 实验成绩 指导教师 实 验 报 告 院系 信息工程学院 班级 学号 姓名 日期

x3 =charfcn[0](n)-iztrans(exp(i*w0),w0,n) x4 =charfcn[2](n)+charfcn[1](n)+charfcn[0](n) 4、求一下系统函数所描述的离散系统的零极点分布图,并判断系统的稳定性 (1) (0.3)()(1)(1) z z H z z j z j -= +-++ z1=[0,0.3]';p1=[-1+j,-1-j]';k=1; [b1,a1]=zp2tf(z1,p1,k); subplot(1,2,1);zplane(z1,p1); title('极点在单位圆外); subplot(1,2,2);impz(b1,a1,20); 由图可见:当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。由此可知系统为不稳定系统。 -1 -0.5 00.51 -2 -1.5-1-0.500.511.5 2Real Part I m a g i n a r y P a r t 极点在单位圆外 n (samples) A m p l i t u d e Impulse Response

数字信号处理实验2

常见离散信号的 M ATLAB 产生和图形显示 姓名: 刘雷明 学号:222015327012037 一、实验目的 (1)熟悉MATLAB 应用环境,常用窗口的功能和使用方法。 (2)加深对常用离散时间信号的理解。 (3)掌握简单的绘图命令。 (4)掌握线性卷积的计算机编程方法。 二、实验原理与方法 1)单位抽样序列 ?1 n = 0 δ (n ) = ? n ≠ 0 ?0 如果δ (n ) 在时间轴上延迟了 k 个单位,得到δ (n - k ) 即: 1 n = k δ (n - k ) = ? n ≠ 0 ?0 (2)单位阶跃序列 ?1 n ≥ 0 u (n ) = ? n < 0 ?0 ?1 0 ≤ n ≤ N -1 (3)矩形序列 R N (n ) = ? ?0 其他 (4)正弦序列 x (n ) = A sin(wn +?) (5)复正弦序列 x (n ) = e jwn

(6)指数序列 x(n)= a n (7)线性时不变系统的响应为如下的卷积计算式: ∞ y(n)= x (n)* h(n)=∑x(m)h(n - m) m=-∞ 三、实验内容及步骤 (1)复习常用离散时间信号的有关内容。 (2)编制程序产生上述 6 种序列(长度可输入确定,对(4) (5) (6)中的参数可自行选择),并绘出其图形。 (3)已知系统的单位脉冲响应h(n)=0.9n u(n),输入信号x(n)= R10 (n),试用卷积法求解系统的输出y(n),并绘出x(n) ~ n 、h(n) ~ n 及y(n) ~ n 图 形。 四、实验结果 一:

二:

数字信号处理实验及参考程序

数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2);

6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22];

数字信号处理实验4

数字信号处理实验四 第一题结果: (1)没有增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 %H(3,13) = 0.75;H(5,11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线

(2)增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 H(3) = 0.75;H(13) = 0.75;H(5) = 0.25;H(11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线 第二题结果:

郑州大学数字信号处理课程设计报告

实验一:基于DFT的数字谱分析以及可能出现的问题 一、实验目的: 1.进一步加深对DFT的基本性质的理解。 2.掌握在MATLAB环境下采用FFT函数编程实现DFT的语句用法。 3.学习用DFT进行谱分析的方法,了解DFT谱分析中出现的频谱泄露和栅栏效应现 象,以便在实际中正确应用DFT。 二、实验步骤: 1.复习DFT的定义、物理含义以及主要性质。 2.复习采用DFT进行谱分析可能出现的三个主要问题以及改善方案。 3.按实验内容要求,上机实验,编写程序。 4.通过观察分析实验结果,回答思考题,加深对DFT相关知识的理解。 三、上机实验内容: 1.编写程序产生下列信号供谱分析用: 离散信号: x1=R10(n) x2={1,2,3,4,4,3,2,1},n=0,1,2,3,4,5,6,7 x3={4,3,2,1, 1,2,3,4},n=0,1,2,3,4,5,6,7 连续信号: x4=sin(2πf1t)+sin(2πf2t) f1=100Hz, f2=120Hz,采样率fs=800Hz 2.对10点矩形信号x1分别进行10点、16点、64点和256点谱分析,要求256点 频谱画出连续幅度谱,10点、16点和64点频谱画出离散幅度谱,观察栅栏效应。 3.产生信号x2和x3分别进行8点、16点谱分析,画出离散幅度谱,观察两个信 号的时域关系和幅度谱的关系。 4.对双正弦信号x4以采样率fs=800Hz抽样,生成离散双正弦信号并画出连续波形; 对离散双正弦信号进行时域截断,截取样本数分别为1000、250、50。对不同样本的双正弦信号分别进行1024点谱分析,画出连续幅度谱,观察频谱泄露现象。

数字信号处理书上实验1.2.3.4

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MA TLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)=0.8n0≤n≤15 b) x(n)=e(0.2+3j)n0≤n≤15 c) x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。 e) 将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。 clear all; N=0:15; % a) x(n)=0.8n 0≤n≤15 xa=0.8.^N;

数字信号处理上机实验代码

文件名:tstem.m(实验一、二需要) 程序: f unction tstem(xn,yn) %时域序列绘图函数 %xn:被绘图的信号数据序列,yn:绘图信号的纵坐标名称(字符串)n=0:length(xn)-1; stem(n,xn,'.'); xlabel('n');ylabel('yn'); axis([0,n(end),min(xn),1.2*max(xn)]); 文件名:tplot.m(实验一、四需要) 程序: function tplot(xn,T,yn) %时域序列连续曲线绘图函数 %xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) %T为采样间隔 n=0;length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]); 文件名:myplot.m(实验一、四需要)

%(1)myplot;计算时域离散系统损耗函数并绘制曲线图。function myplot(B,A) %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000) m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); 文件名:mstem.m(实验一、三需要) 程序: function mstem(Xk) %mstem(Xk)绘制频域采样序列向量Xk的幅频特性图 M=length(Xk); k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值) stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度'); axis([0,2,0,1.2*max(abs(Xk))]); 文件名:mpplot.m(实验一需要)

《数字信号处理》课程实验题目

计电学院《数字信号处理》课程实验 适用专业:电子通信工程专业;实验学时:9 学时 一、实验的性质、任务和基本要求 (一)本实验课的性质、任务 数字信号处理课程实验是数字信号处理课程的有效的补充部分,通过实验,使学生巩固和加深数字信号处理的理论知识的理解和掌握,在实验过程中了解简单但是完整的数字信号处理的工程实现方法和流程。通过实践进一步加强学生独立分析问题和解决问题的能力、实际动手能力、综合设计及创新能力的培养。 (二)基本要求 掌握数字信号处理基本理论知识和滤波器设计及应用。 (三)实验选项

二、实验教学内容 实验一 1、实验目的和要求 1)加深理解时域采样定理、体会使用MATLAB的离散FT函数fft( )来解决涉及模拟信号的问题; 2)加深理解对带通信号的采样特性,学会采用MATLAB解决该问题; 3)加深理解在频率采样法中,过渡点对所设计滤波器特性的影响。 2、实验要求 1)提供MATLAB程序,画出每个步骤的曲线图; 2)写实验报告,包含有对所得结果进行分析和说明。 第一组:张毅雷凌峰白法聪覃昱滔刘强何新文 第二组:邓志强林盛勇李日胜黎少锋梁聪杨晨 实验二 1、实验目的和要求 (1)加深理解采用数字信号处理方法对模拟信号处理的过程、掌握使用MATLAB处理的方法;对一段音乐信号进行处理和输出;要求画出滤波前后语音信号时域波形、信号和滤波器的幅度频率特性曲线、相位频率特性曲线; (2)加深对截断效应的理解; (3)掌握使用MATLAB设计滤波器,并对语音信号处理的方法。对一段音乐信号进行处理和输出;要求画出滤波前后语音信号时域波形、信号和滤波器的幅度频率特性曲线、相位频率特性曲线。 2、实验要求 1)提供MATLAB程序,画出每个步骤的曲线图; 2)写实验报告,包含有对所得结果进行分析和说明。 第九组:汪涛张汉毅巫金敏张经中柳泽举 第六组:罗涛梁乐杰黄乃生 实验三 1、实验目的和要求 掌握采用MATLAB数字滤波器设计软件编制方法。软件要求在界面内有不同类型(高通低通带通带阻)滤波器的选择、或者只对低通滤波器采用不同方法设

相关主题
文本预览
相关文档 最新文档