数字信号处理matlab报告

时间:2024.5.4

实验一    熟悉matlab

一、实验内容

练习matlab的使用,熟悉离散卷积运算,产生复指数序列

二、实验目的

1、掌握离散卷积计算机实现。

2、进一步对离散信号卷积算法的理解。

三、原理及算法

算法:把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。

原理:离散卷积定义为

         

    当序列为有限长时,则  

         

四、程序与运行结果

% 实现复指数序列程序

n=0:30;

x=exp(.05+i*pi/6).^n;

xr=real(x);

xi=imag(x);

xm=abs(x);

xa=angle(x);

figure;

subplot(221);stem(n,xr);title('实部');

subplot(222);stem(n,xi);title('虚部');

subplot(223);stem(n,xm);title('模');

subplot(224);stem(n,xa);title('相角');

程序运行结果如图1所示。从图中可以看出,复指数序列的实部和虚部都是幅度按指数增长的正弦序列。

图1  复指数序列波形

x1=[1 1 1 1 ];nx1=0:3;% 实现卷积程序

h1=[1 0.8 0.64 0.8^3 0.8^4];nh1=0:4;

y1=conv(x1,h1);

subplot(2,3,1);stem(nx1,x1);title('序列x1');

xlabel('n');ylabel('x1(n)');

subplot(2,3,2);stem(nh1,h1);title('序列h1');

xlabel('n');ylabel('h1(n)');

subplot(2,3,3);stem(y1);title('序列y1');

xlabel('n');ylabel('y1(n)');

x2=[1 1 1 1];nx2=0:3;

nh2=0:1:20;

h2=(0.8).^nh2;

y2=conv(x2,h2);

subplot(2,3,4);stem(x2);title('序列x2');

xlabel('n');ylabel('x2(n)');

subplot(2,3,5);stem(h2);title('序列h2');

xlabel('n');ylabel('h2(n)');

subplot(2,3,6);stem(y2);title('序列y2');

xlabel('n');ylabel('y2(n)')

 

图2 卷积程序波形

五、结果分析

有限长序列的离散卷积计算结果与理论值一致,而存在无限长序列做卷积时,由于在程序处理时是用比较长有限长序列代替的,所以与理论值基本相同。

六、实习心得

主要进行的是有matlab实现离散卷积的计算,分为三个类型:冲激响应h(n)与输入序列x(n)都为有限长,一个序列为有限长一个序列为无限长和两个序列均为无限长。这部分实习内容不难,是原来做过的,主要是为了拾拣起原来所学的知识。第一种类型是最简单,也是最基本的,直接调用函数y=conv(x.,h)即可。在第二种和第三种类型的计算中遇到了一些困难,在输入序列时,由于存在无限长的序列,不知道该怎么输入,查过了相关的题目才弄明白。通过本专题的实习,让我对数字信号处理中的一些基础知识有了一些回顾,对原来所学过的知识也熟悉了一些。

实验   FFT

一、实验内容

设有离散序列    x(n)= 0.51sin(2πn/32)+sin(4πn/32)-0.1sin(6πn/32);

采集数据长度N=32,分析32点的频谱,并画出幅频特性。

二、实验目的

1、了解DFT及FFT的性质和特点

2、利用FFT算法计算信号的频谱。

三、关键算法 

算法:读入离散序列x(n)= 0.51sin(2πn/32)+sin(4πn/32)-0.1sin(6πn/32),采集长度为N=32的数据,调用matlab中的函数fft(x)对其作离散傅里叶变换得到32点的频谱。

原理概要:当抽样数N=2M时,以下为算法蝶形图。

一般规律如下:

1、 当N=2M时,则要进行M次分解,即进行M级蝶形单元的计算

2、按自然顺序输入,输出是码位倒置。

3、每一级包含N/2个基本蝶形运算

4、第L级有2L-1个蝶群,蝶群间隔为N/2L-1

如果是Matlab实现的话,可用以下两种方法计算信号频谱

1、调用库函数为:fft(),直接计算X(k)

2、进行矩阵运算

四、程序及运行结果

n = 0:31;

x = 0.51*sin(2*pi*n/32)+sin(4*pi*n/32)-0.1*sin(6*pi*n/32);

y=fft(x);       

y1=abs(y);        

y2=angle(y);      

subplot(2,1,1);stem(y1);    

subplot(2,1,2);

stem(y2);   

title('Hzhao');

typedef struct{float real;float imag;

             }COMPLEX;

extern void fft(COMPLEX*x,int m);

extern void ifft(COMPLEX*x,int m);

void fft(COMPLEXS*x,int m)

{ static COMPLEX*w;

    static int mstore=0;

    static int n=1;

    COMPLEX u,temp,tm;

    COMPLEX*xi,*xip,*xj,*wptr;

    int i,j,k,l,le,windex;

    double arg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_reaL;

    if(m! =mstore)

    {if(mstore!=0)free(w);

        mstore=m;

        if(m==0)return;

            n=1<<m;

            le=n/2;

            w=(COMPLEX*)colloc(le-1,sizeof(COMPLEX));

            if(! w)

                {printf("\nUnable to allocate complex w array\n");

                exit(1); }

            arg=4.0*atan(1.0)/le;

            wrecur_real=w_real=cos(arg);

            wrecur_imag=w_imag=-sin(arg);

            xj=w;

            for(j=1;j<le;j++)

           { xj->real=(float)wrecur_real;

            xj->imag=(float)wrecur_imag;

            xj++;

            wtemp_real=wrecur_real*w_real_wrecur_imag*w_imag;

            wrecur_imag=wrecur_real*w_imag+wrecur_imag*w_real;

            wrecur_real=wtemp_real; }}

        le=n;

        windex=1;

        for(l=0;1<m;1++)

            {le=le/2;

            for(i=0;i<n;i=i+2*le)

                {xi=x+i;

                xip=xi+le;

                temp.real=(xi->real+xip->real);

                temp,imag=(xi->imag+xip->imag);

                xip->real=(xi->real-xip->real);

                xip-imag=(xi->imag-xip->imag);

                xi=temp; }

            wptr=w+windex-1;

            for(j=;j<le;j++)

                {u=*wptr

                for(i=j;i<n;i=i+2*le)

                   { xi=x+i;

                    xip=xi+le;

                    temp.real=(xi->real+xip->real);

                    temp.imag=(xi->imag+xip->imag);

                    tm.real=xi->real-xip->real;

                    tm.imag=xi->imag-xip->imag;

                    xip->real=(tm.real*u.real-tm.imag*u.imag);

                    xip->imag=(tm.real*u,imag+tm.imag*u.real);

                    *xi=temp; }

                wptr=wptr+windex; }

                windex=2*windex; }

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

                  {  j=0

                   for(k=0;k<m;++k)

                      j=(j<<1)|(1&(i>>k));

                      if(i<j)

                         { xi=x+i;

                          xj=x+j;

                          temp=*xj;

                          *xj=*xi;

                          *xi=temp; }} }

       void ifft(COMPLEX*x,int m)

           {static COMPLEX*w)

       {static int mstore=0;

           static int n=1;

            COMPLEX u,temp,tm;

            COMPLEX*xi,*xip,*xj,*wptr;

            int i,j,k,l,le,windex;

            float scale;

            double arg,w_real,w_imag,wrecur_real.wrecur_imag,wtemp_real;

五、结果分析

 N 点DFT的频谱分辨率是2 π/N。一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率。这是因为x[n] 实际上是x(t) 采样的主值序列,而将x[n]补零得到的x'[n] 周期延拓之后与原来的序列并不相同,也不是x(t) 的采样。因此是不同离散信号的频谱。对于补零至M点的x'的DFT,只能说它的分辨率2 π/M仅具有计算上的意义,并不是真正的、物理意义上的频谱。频谱分辨率的提高只能通过提高采样频率实现。

六、专题实习心得

离散傅里叶变换是一种快速算法,由于有限长序列在其频域也可离散化为有限长序列,因此离散傅里叶变换在数字信号处理中是非常有用的。DFT是重要的变换,在分析有限长序列的有用工具、信号处理的理论上有重要意义、运算方法上起核心作用,谱分析、卷积、相关都可以通DFT在计算机上实现。DFT解决了两个问题:一是离散与量化,二是快速运算。通过编程实践体会到了时域、频域信号的对应关系,也对采样频率的含义有了深刻的认识,同时也加深了对采样信号频谱周期性的理解。

专题 数字波器的设计

一、实验内容

1、设计一个Butterworth和Chebyshev数字低通滤波器,并学习模拟滤波器转换数字滤波器的两种方法,练习课本169页、181页、187页编程题

2、分析不同滤波器的特点和结果。

3、编程设计实现FIR滤波器。

二、实验目的

1.掌握不同IIR滤波器的性质、特点,和用窗函数法设计FIR滤波器的原理和方法。

2.通过实验学习如何设计各种常用的IIR滤波器和FIR滤波器,以便在实际工作中能根据具体情况使用IIR和FIR滤波器。

三、原理及算法

IIR滤波器算法:输入通带截止频率Wp,阻带截止频率Ws,通带衰减Rp,阻带衰减Rs,通过这些数值调用[N Wn]=buttord(Wp,Ws,Rp,Rs) 函数计算巴特沃斯数字滤波器的阶数N和截止频率wn,再根据阶数N通过函数[b,a]=butter(N,Wn),即可得到所要的巴特沃斯滤波器。

IIR滤波器原理概要:

1、滤波器类型

1.1 Butterworth滤波器

      Butterworth滤波器的特点是在通带内的频率特性是平坦的,并且随着频率的增加而衰减。Butterworth滤波器又是最简单的滤波器。

       N阶低通Butterworth滤波器的幅度平方函数为:

1.2 ChebyshevⅠ型滤波器

      ChebyshevⅠ型滤波器的在通带内的响应是等纹波的,而在阻带内是单调下降的,或在通带内是单调下降的,在阻带内是等纹波的特性。

      其幅度平方函数为 

          其中VN是Chebyshev多项式。

1.3椭圆滤波器

椭圆滤波器在通带和阻带内都是等纹波振荡。

椭圆滤波器的特性函数为:

   其中UN是N阶雅可比函数。

2、变换方法

2.1冲激响应不变法

 冲激响应不变法的基本原理是从滤波器的冲激响应出发,对模拟滤波器冲激响应h(t)进行取样,所得到的离散序列h(nT)作为数字滤波器的单位取样响应。

H(z)是由H(s)通过下式的对应关系得到。

2.2双线性变换是在所得到满足性能指标要求的模拟滤波器的基础上,通过变换

,从而得到相应的数字滤波器。

FIR滤波器算法:通过其通带截止频率ωp与阻带截止频率ωs算出其过渡带的宽度与滤波器的长度,从而得到理想滤波器的截止频率,根据所要求的理想滤波器,得到hd(n)。由于其通带截止频率处的衰减不大于3分贝与阻带衰减不小于40分贝,我选择最接近的汉宁窗,最后调用函数h=hd.*win 及freqz(h,1,512)得到实际汉宁窗的响应和实际滤波器的幅度响应。

FIR滤波器原理概要:

1、利用窗函数法设计FIR 滤波器

FIR滤波器的最大特点是其相位特性可以设计为严格的线性,而其幅值可以任意设置,这样输出波形就不会相位失真。

理想低通滤波器的单位取样响应hd(n)是无限长的,所以要用一个有限长的因果序列h(n)进行逼近,最有效的方法是截断hd(n),即用有限长的窗函数w(n)来截取    hd(n),表示为h(n)=hd(n)w(n)

为获得线性相位的FIR滤波器,h(n)必须满足中心对称条件,序列h(n)应有一定的延迟α,且α=(N-1)/2

    频率响应逼近hd(ejw)的FIR滤波器,最简单的窗函数为矩形窗

             W(n)=        1          n<(N-1)/2

0          n>(N-1)/2

    加窗后的频谱 加窗后使实际频响偏离理想频响,影响主要有两个方面:

(1)通带和阻带之间存在过渡带,过渡带宽度取决于窗函数频响的主瓣宽度。

(2)通带和阻带区间有纹波,这是由窗函数的旁瓣引起的,旁瓣越多,纹波越多。增加窗函数的宽度N,其主瓣宽度减小,但不改变旁瓣的相对值。

     为了改善滤波器的性能,要求窗函数的主瓣宽度尽可能窄,以获得较窄的过渡带;旁瓣衰减尽可能大,数量尽可能大,从而改善纹波状况,使实际频响H(ejω)更好地逼近理想频响Hd(ejω

2.除了矩形窗外,一般还可以采用以下几种窗函数

 Battlet窗 :       

汉宁窗:

海明窗

布来克曼窗

其中:WR是矩形窗的频谱

四、程序及运行结果

1.w1=2*400*tan(2*pi*90/(2*400));

w2=2*400*tan(2*pi*110/(2*400));

wr=2*400*tan(2*pi*120/(2*400));

[N,wn]=buttord([w1 w2],[100 wr],3,10,'s');

[B,A]=butter(N,wn,'s');

[num,den]=bilinear(B,A,400);

[h,w]=freqz(num,den);

f=w/pi*200;

plot(f,20*log10(abs(h)));

axis([40,160,-30,10]);

grid;

xlabel('频率/kHz')

ylabel('幅度/dB')

2.[B,A]=cheby1(3,0.7,2*pi*1000,'s');

[num1,den1]=impinvar(B,A,4000);

[h1,w]=freqz(num1,den1);

[B,A]=cheby1(3,0.7,2/0.00025,'s');

[num2,den2]=bilinear(B,A,4000);

[h2,w]=freqz(num2,den2);

f=w/pi*2000;

plot(f,abs(h1),'-',f,abs(h2),'-');

grid;

xlabel('频率/Hz')

ylabel('幅值/dB')

3.w1=2*400*tan(2*pi*90/(2*400));

w2=2*400*tan(2*pi*110/(2*400));

wr=2*400*tan(2*pi*120/(2*400));

[N,wn]=cheb1ord([w1 w2],[100 wr],3,10,'s');

Rp=0.7;

[B,A]=cheby1(N,Rp,wn,'s');

[num,den]=bilinear(B,A,400);

[h,w]=freqz(num,den);

f=w/pi*200;

plot(f,20*log10(abs(h)));

axis([40,160,-30,10]);

grid;

xlabel('频率/kHz')

ylabel('幅度/dB')

4. [B,A]=butter(3,2*pi*1000,'s');%3阶滤波器、3分贝截止频率2*pi*1000

[num1,den1]=impinvar(B,A,4000);%冲激响应不变法

[h1,w]=freqz(num1,den1);%freqz是绘制一个数字滤波器的频率响应的函数,返回值h1是通过  滤波器后的响应值向量,w是输入的频率向量

[B,A]=butter(3,2/0.00025,'s');

[num2,den2]=bilinear(B,A,4000);%双线性变换

[h2,w]=freqz(num2,den2);

f=w/pi*2000;

plot(f,abs(h1),'-',f,abs(h2),'-');

grid;

xlabel('频率/Hz')

ylabel('幅值/dB')

5.deltw=0.4*pi;

Wc=0.2*pi;

As=40;

N=ceil(8*pi/deltw)+1;

fprintf('N=%.0f\n',N);

win=hanning(N);

h=fir1(N-1,Wc/pi,win);

omega=linspace(0,pi,512);

mag=freqz(h,[1],omega);

magdb=20*log10(abs(mag));

plot(omega/pi,magdb);axis([0 1 -100 0]);

grid;xlabel('归一化频率');ylabel('幅度')

五、结果分析

Butterworth滤波器在通带内的频率特性是平坦的,并且随着频率的增加而衰减。正弦信号在经过IIR滤波器滤波后,高频信号被滤除,低频信号被保留了下来。

根据滤波器特性:通带截止频率处的衰减不大于3分贝;阻带衰减不小于40分贝。选用汉宁窗。FIR滤波器的最大特点是其相位特性可以设计为严格的线性,而其幅值可以任意设置,这样输出波形就不会相位失真。

六、专题实习心得

通过本专题的学习,熟悉和巩固了Butterworth数字低通滤波器的设计方法和原理,实现滤波器设计的有关经典算法,更重要的是熟练掌握使用MATLAB语言设计各种要求的数字滤波器。这一部分的内容相对来说是有些难度了,做起来花费的精力也多了一些,不过对数字信号处理内容的掌握上又加深了一层。

FIR有限冲击响应数字滤波器由于设计灵活,在滤波效果和响应时间之间能较好的折衷,因此在数字信号处理领域应用广泛。用窗函数法设计FIR数字滤波器在截断点依旧取模拟样本冲激响应的全值更利于理解和仿真。但是,窗函数法设计FIR数字滤波器的频率特性

与模拟样本频率特性不完全一样,且具有线性相移的特点。窗函数法设计FIR数字滤波器是傅立叶变换的典型运用。通过学习有益于加深对数字滤波器的理解,并提高使用傅立叶变换分析解决实际问题的能力。

更多相关推荐:
数字信号处理报告

数字信号处理B课程项目题目组号任课教师实施报告数字音效处理器4020xx年10月18日1报告提纲一课程项目要求设计要求设计一个数字音效处理器能够实现语音信号的各种音效处理要求1输入语音信号源为实际环境采集语音2...

数字信号处理课程设计报告

课程设计报告课程名称课题名称专业通信工程班级学号姓名指导教师20xx年12月25日湖南工程学院课程设计任务书课程名称数字信号处理课题数字滤波器设计及滤波专业班级学生姓名学号指导老师审批任务书下达日期20xx年1...

中南大学数字信号处理实验报告

中南大学数字信号处理实验报告学生姓名学号指导教师学院专业班级完成时间2目录实验一实验二常见离散时间信号的产生和频谱分析3实验结果与分析5数字滤波器的设计14实验结果与分析173实验一常见离散时间信号的产生和频谱...

数字信号处理实验报告

南京信息工程大学数字信号处理实验报告学院:电子与信息工程学院班级:11通信1班学号:XXX姓名:XX指导教师:XX20XX/12/6实验一Matlab基本知识和信号处理工具箱一、实验目的1、了解Matlab的基…

数字信号处理阅读报告

Dsp在通信领域的应用10通信1班任俊松1004140116一DSP在移动通信中的应用DSP在GSM中的应用GSM的功能框图如图1所示图中一个典型的数字通信模块包括信号压缩差错检测加密调制和均衡最初人们认为低功...

数字信号处理实践报告

数字信号处理实践报告实践报告题目专业学生姓名准考证号指导教师20xx年5月一目的与要求1掌握数字信号处理基础课程的基本理论2掌握应用MATLAB进行数字信号处理的程序设计方法二主要内容设计题目及设计要求已知低通...

数字信号处理的认识报告

数字信号处理认识报告20xx90512101文通084-1安森令《数字信号处理》是我们通信工程和电子类专业的一门重要的专业基础课程,主要任务是研究数字信号处理理论的基本概念和基本分析方法,通过建立数学模型和适当…

数字信号处理实验报告-FFT算法的MATLAB实现

数字信号处理实验报告实验二FFT算法的MATLAB实现一实验目的通过本实验的学习掌握离散傅立叶变换的理论特别是FFT的基本算法以及其在在数字信号处理中的应用二实验内容题一若xncosnpi6是一个N12的有限序...

数字信号处理实习报告

中国地质大学武汉数字信号处理上机实习学生姓名班级学号指导老师题目一离散卷积计算一实验题目设线性时不变LTI系统的冲激响应为hn输入序列为xn1hn08n0n4xnunun42hn08nunxnunun43hn0...

数字信号处理报告

高海拔高寒地区高速公路构造物安全监测和沿途环境变化信息获取及无线传输技术摘要本文提出了一种基于多点震动信号的行驶车辆检测方法并分析了相关数字信号处理技术利用加速度传感器采集车辆对路面作用的连续激励造成的地震动信...

数字信号处理综合设计报告

江南大学物联网工程学院课题数字信号处理综合设计报告设计题目信号处理系统综合设计专业通信工程班级通信0902姓名吴磊学号07020xx225指导教师陈文驰张建平20xx年6月29日一设计概述目的和要求数字信号处理...

数字信号处理课程设计报告

第一章绪论11设计的目的及意义本次课程设计的目的是利用MATLAB对语音信号进行数字信号处理和分析要求学生采集语音信号后在MATLAB软件平台进行频谱分析并对所采集的语音信号加入干扰噪声对加入噪声的信号进行频谱...

数字信号处理报告(25篇)