数字信号处理的MATLAB实现

合集下载

数字信号处理实验matlab版离散傅里叶级数(DFS)

数字信号处理实验matlab版离散傅里叶级数(DFS)

数字信号处理实验matlab版离散傅⾥叶级数(DFS)实验11 离散傅⾥叶级数(DFS)(完美格式版,本⼈⾃⼰完成,所有语句正确,不排除极个别错误,特别适⽤于⼭⼤,勿⽤冰点等⼯具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)XXXX学号姓名处XXXX⼀、实验⽬的1、加深对离散周期序列傅⾥叶级数(DFS)基本概念的理解。

2、掌握⽤MA TLAB语⾔求解周期序列傅⾥叶级数变换和逆变换的⽅法。

3、观察离散周期序列的重复周期数对频谱特性的影响。

4、了解离散序列的周期卷积及其线性卷积的区别。

⼆、实验内容1、周期序列的离散傅⾥叶级数。

2、周期序列的傅⾥叶级数变换和逆变换。

3、离散傅⾥叶变换和逆变换的通⽤⼦程序。

4、周期重复次数对序列频谱的影响。

5、周期序列的卷积和。

三、实验环境MA TLAB7.0四、实验原理⽤matlab进⾏程序设计,利⽤matlab绘图⼗分⽅便,它既可以绘制各种图形,包括⼆维图形和三位图形,还可以对图像进⾏装饰和控制。

1、周期序列的离散傅⾥叶级数(1)连续性周期信号的傅⾥叶级数对应的第k次谐波分量的系数为⽆穷多。

⽽周期为N 的周期序列,其离散傅⾥叶级数谐波分量的系数只有N个是独⽴的。

(2)周期序列的频谱也是⼀个以N为周期的周期序列。

2、周期序列的傅⾥叶级数变换和逆变换例11-1已知⼀个周期性矩形序列的脉冲宽度占整个周期的1/4,⼀个周期的采样点数为16点,显⽰3个周期的信号序列波形。

要求:(1)⽤傅⾥叶级数求信号的幅度频谱和相位频谱。

(2)求傅⾥叶级数逆变换的图形,与原信号图形进⾏⽐较。

解MA TLAB程序如下:N=16;xn=[ones(1,N/4),zeros(1,3*N/4)];xn=[xn,xn,xn];n=0:3*N-1;k=0:3*N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k); %离散傅⾥叶级数变换 x=(Xk*exp(j*2*pi/N).^(n'*k))/N; %离散傅⾥叶级数逆变换subplot(2,2,1),stem(n,xn);title('x(n)');axis([-1,3*N,1.1*min(xn),1.1*max(xn)]); subplot(2,2,2),stem(n,abs(x)); %显⽰逆变换结果 title('IDFS|X(k)|');axis([-1,3*N,1.1*min(x),1.1*max(x)]); subplot(2,2,3),stem(k,abs(Xk)); %显⽰序列的幅度谱 title('|X(k)|');axis([-1,3*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]); subplot(2,2,4),stem(k,angle(Xk)); %显⽰序列的相位谱 title('arg|X(k)|');axis([-1,3*N,1.1*min(angle(Xk)), 1.1*max(angle(Xk))]);运⾏结果如图11-1所⽰。

数字信号处理实验 matlab版 快速傅里叶变换(FFT)

数字信号处理实验 matlab版 快速傅里叶变换(FFT)

实验14 快速傅里叶变换(FFT)(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word 格式会让很多部分格式错误,谢谢)XXXX 学号姓名处XXXX一、实验目的1、加深对双线性变换法设计IIR 数字滤波器基本方法的了解。

2、掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。

3、了解MA TLAB 有关双线性变换法的子函数。

二、实验内容1、双线性变换法的基本知识2、用双线性变换法设计IIR 数字低通滤波器3、用双线性变换法设计IIR 数字高通滤波器4、用双线性变换法设计IIR 数字带通滤波器三、实验环境MA TLAB7.0四、实验原理1、实验涉及的MATLAB 子函数(1)fft功能:一维快速傅里叶变换(FFT)。

调用格式:)(x fft y =;利用FFT 算法计算矢量x 的离散傅里叶变换,当x 为矩阵时,y 为矩阵x每一列的FFT 。

当x 的长度为2的幂次方时,则fft 函数采用基2的FFT 算法,否则采用稍慢的混合基算法。

),(n x fft y =;采用n 点FFT 。

当x 的长度小于n 时,fft 函数在x 的尾部补零,以构成n点数据;当x 的长度大于n 时,fft 函数会截断序列x 。

当x 为矩阵时,fft 函数按类似的方式处理列长度。

(2)ifft功能:一维快速傅里叶逆变换(IFFT)。

调用格式:)(x ifft y =;用于计算矢量x 的IFFT 。

当x 为矩阵时,计算所得的y 为矩阵x 中每一列的IFFT 。

),(n x ifft y =;采用n 点IFFT 。

当length(x)<n 时,在x 中补零;当length(x)>n 时,将x 截断,使length(x)=n 。

(3)fftshift功能:对fft 的输出进行重新排列,将零频分量移到频谱的中心。

调用格式:)(x fftshift y =;对fft 的输出进行重新排列,将零频分量移到频谱的中心。

利用Matlab进行数字信号处理与分析

利用Matlab进行数字信号处理与分析

利用Matlab进行数字信号处理与分析数字信号处理是现代通信、控制系统、生物医学工程等领域中不可或缺的重要技术之一。

Matlab作为一种功能强大的科学计算软件,被广泛应用于数字信号处理与分析领域。

本文将介绍如何利用Matlab进行数字信号处理与分析,包括基本概念、常用工具和实际案例分析。

1. 数字信号处理基础在开始介绍如何利用Matlab进行数字信号处理与分析之前,我们首先需要了解一些基础概念。

数字信号是一种离散的信号,可以通过采样和量化得到。

常见的数字信号包括音频信号、图像信号等。

数字信号处理就是对这些数字信号进行处理和分析的过程,包括滤波、频谱分析、时域分析等内容。

2. Matlab在数字信号处理中的应用Matlab提供了丰富的工具箱和函数,可以方便地进行数字信号处理与分析。

其中,Signal Processing Toolbox是Matlab中专门用于信号处理的工具箱,提供了各种滤波器设计、频谱分析、时域分析等功能。

除此之外,Matlab还提供了FFT函数用于快速傅里叶变换,可以高效地计算信号的频谱信息。

3. 数字信号处理实例分析接下来,我们通过一个实际案例来演示如何利用Matlab进行数字信号处理与分析。

假设我们有一个包含噪声的音频文件,我们希望去除噪声并提取出其中的有效信息。

首先,我们可以使用Matlab读取音频文件,并对其进行可视化:示例代码star:编程语言:matlab[y, Fs] = audioread('noisy_audio.wav');t = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time (s)');ylabel('Amplitude');title('Noisy Audio Signal');示例代码end接下来,我们可以利用滤波器对音频信号进行去噪处理:示例代码star:编程语言:matlabDesign a lowpass filterorder = 8;fc = 4000;[b, a] = butter(order, fc/(Fs/2), 'low');Apply the filter to the noisy audio signaly_filtered = filtfilt(b, a, y);Plot the filtered audio signalplot(t, y_filtered);xlabel('Time (s)');ylabel('Amplitude');title('Filtered Audio Signal');示例代码end通过以上代码,我们成功对音频信号进行了去噪处理,并得到了滤波后的音频信号。

数字信号处理相关MATLAB实验内容--第1章

数字信号处理相关MATLAB实验内容--第1章

实验1 离散时间信号的时域分析一、实验目的(1)了解MATLAB 语言的主要特点及作用;(2)熟悉MATLAB 主界面,初步掌握MATLAB 命令窗和编辑窗的操作方法;(3)学习简单的数组赋值、数组运算、绘图的程序编写;(4)了解常用时域离散信号及其特点;(5)掌握MATLAB 产生常用时域离散信号的方法。

二、知识点提示本章节的主要知识点是利用MATLAB 产生数字信号处理的几种常用典型序列、数字序列的基本运算;重点是单位脉冲、单位阶跃、正(余)弦信号的产生;难点是MATLAB 关系运算符“==、>=”的使用。

三、实验内容1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示范围21n n n ≤≤。

(函数命名为impseq(n0,n1,n2))并利用该函数实现序列:()()()632-+-=n n n y δδ;103≤≤-nn 0212. 在MATLAB 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示范围21n n n ≤≤。

(函数命名为stepseq(n0,n1,n2))并利用该函数实现序列:()()()20522≤≤--++=n n u n u n y3. 在MATLAB 中利用数组运算符“.^”来实现一个实指数序列。

如: ()()5003.0≤≤=n n x n4. 在MATLAB 中用函数sin 或cos 产生正余弦序列,如:()()2003.0cos 553.0sin 11≤≤+⎪⎭⎫ ⎝⎛+=n n n n x πππ5. 已知()n n x 102cos 3π=,试显示()()()3,3,+-n x n x n x 在200≤≤n 区间的波形。

6. 参加运算的两个序列维数不同,已知()()6421≤≤-+=n n u n x ,()()8542≤≤--=n n u n x ,求()()()n x n x n x 21+=。

FFT算法(用matlab实现)

FFT算法(用matlab实现)

数字信号处理实验报告 实验二 FFT 算法的MATLAB 实现(一)实验目的:理解离散傅立叶变换时信号分析与处理的一种重要变换,特别是FFT 在数字信号处理中的高效率应用。

(二)实验原理:1、有限长序列x(n)的DFT 的概念和公式:⎪⎪⎩⎪⎪⎨⎧-≤≤=-≤≤=∑∑-=--=101010)(1)(10)()(N k kn N N n kn N N n W k x N n x N k W n x k x)/2(N j N eW π-=2、FFT 算法调用格式是 X= fft(x) 或 X=fft(x,N)对前者,若x 的长度是2的整数次幂,则按该长度实现x 的快速变换,否则,实现的是慢速的非2的整数次幂的变换;对后者,N 应为2的整数次幂,若x 的长度小于N ,则补零,若超过N ,则舍弃N 以后的数据。

Ifft 的调用格式与之相同。

(三)实验内容1、题一:若x(n)=cos(n*pi/6)是一个N=12的有限序列,利用MATLAB 计算它的DFT 并画出图形。

源程序: clc; N=12; n=0:N-1; k=0:N-1;xn=cos(n*pi/6); W=exp(-j*2*pi/N); kn=n'*kXk=xn*(W.^kn) stem(n,Xk); xlabel('k'); ylabel('Xk'); grid on ;也可用FFT 算法直接得出结果,程序如下: clc; N=12; n=0:N-1;xn=cos(n*pi/6);Xk=fft(xn,N); stem(n,Xk); xlabel('k'); ylabel('Xk'); grid on ;实验结果:24681012kX k分析实验结果:用DFT 和用FFT 对序列进行运算,最后得到的结果相同。

但用快速傅立叶变换的运算速度可以快很多。

2、题二:一被噪声污染的信号,很难看出它所包含的频率分量,如一个由50Hz 和120Hz 正弦信号构成的信号,受均值随机噪声的干扰,数据采样率为1000Hz ,通过FFT 来分析其信号频率成分,用MA TLAB 实现。

数字信号处理第三版用MATLAB上机实验

数字信号处理第三版用MATLAB上机实验

实验二:时域采样与频域采样一、时域采样1.用MATLAB编程如下:%1时域采样序列分析fs=1000A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=1000;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,1);stem(n,xn);xlabel('n,fs=1000Hz');ylabel('xn');title('xn');subplot(3,2,2);plot(n,abs(Xk));xlabel('k,fs=1000Hz'); title('|X(k)|');%1时域采样序列分析fs=200A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=200;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs);Xk=fft(xn);subplot(3,2,3);stem(n,xn);xlabel('n,fs=200Hz'); ylabel('xn');title('xn');subplot(3,2,4);plot(n,abs(Xk));xlabel('k,fs=200Hz'); title('|X(k)|');%1时域采样序列分析fs=500A=444.128; a=222.144; w=222.144; ts=64*10^(-3); fs=500;T=1/fs;n=0:ts/T-1; xn=A*exp((-a)*n/fs).*sin(w*n/fs); Xk=fft(xn);subplot(3,2,5);stem(n,xn);xlabel('n,fs=500Hz');ylabel('xn');title('xn');subplot(3,2,6);plot(n,abs(Xk));xlabel('k,fs=500Hz'); title('|X(k)|');2.经调试结果如下图:20406080-200200n,fs=1000Hzxnxn2040608005001000k,fs=1000Hz|X (k)|51015-2000200n,fs=200Hzx nxn510150100200k,fs=200Hz |X(k)|10203040-2000200n,fs=500Hzx nxn102030400500k,fs=500Hz|X (k)|实验结果说明:对时域信号采样频率必须大于等于模拟信号频率的两倍以上,才 能使采样信号的频谱不产生混叠.fs=200Hz 时,采样信号的频谱产生了混叠,fs=500Hz 和fs=1000Hz 时,大于模拟信号频率的两倍以上,采样信号的频谱不产生混叠。

如何使用MATLAB进行数字信号处理

如何使用MATLAB进行数字信号处理

如何使用MATLAB进行数字信号处理MATLAB是一种常用的数学软件工具,广泛应用于数字信号处理领域。

本文将介绍如何使用MATLAB进行数字信号处理,并按照以下章节进行详细讨论:第一章: MATLAB中数字信号处理的基础在数字信号处理中,我们首先需要了解信号的基本概念和数学表示。

在MATLAB中,可以使用向量或矩阵来表示信号,其中每个元素对应着一个离散时间点的信号值。

我们可以使用MATLAB 中的向量运算和函数来处理这些信号。

此外,MATLAB还提供了一组强大的工具箱,包括DSP系统工具箱和信号处理工具箱,以便更方便地进行数字信号处理。

第二章: 数字信号的采样和重构在数字信号处理中,采样和重构是两个核心概念。

采样是将连续信号转换为离散信号的过程,而重构则是将离散信号重新转换为连续信号的过程。

在MATLAB中,可以使用"sample"函数对信号进行采样,使用"interp"函数进行信号的重构。

此外,还可以使用FFT(快速傅里叶变换)函数对离散信号进行频率分析和频谱表示。

第三章: 傅里叶变换与频域分析傅里叶变换是一种常用的信号分析工具,可将信号从时域转换到频域。

MATLAB中提供了强大的FFT函数,可以帮助我们进行傅里叶变换和频谱分析。

通过傅里叶变换,可以将信号分解为不同频率的分量,并且可以通过滤波器和滤波器设计来处理这些分量。

MATLAB还提供了许多用于频域分析的函数,如功率谱密度函数、频谱估计函数等。

第四章: 滤波与降噪滤波是数字信号处理中的重要任务之一,旨在去除信号中的噪声或不需要的频率成分。

在MATLAB中,可以使用FIR和IIR滤波器设计工具箱来设计和实现滤波器。

此外,MATLAB还提供了各种滤波器的函数和滤波器分析工具,如lowpass滤波器、highpass滤波器、带通滤波器等。

这些工具和函数可以帮助我们对信号进行滤波,实现信号降噪和频率调整。

第五章: 时域信号分析与特征提取除了频域分析外,时域分析也是数字信号处理的重要内容之一。

数字信号处理基于matlab(用DFT作谱分析,窗函数的设计)

数字信号处理基于matlab(用DFT作谱分析,窗函数的设计)

实验一:用DFT作谱分析x1=[1 1 1 1];x2=[1 2 3 4 4 3 2 1];n1=0:8;x3=cos(n1*pi/4);n2=0:8;x4=sin(n2*pi/8);figuresubplot(2,2,1);stem(x1);subplot(2,2,2);stem(x2);subplot(2,2,3);stem(x3);subplot(2,2,4);stem(x4);N1=8;F1x1=fft(x1,N1);F1x2=fft(x2,N1);F1x3=fft(x3,N1);F1x4=fft(x4,N1);figuresubplot(2,2,1);stem(abs(F1x1));subplot(2,2,2);stem(abs(F1x2));subplot(2,2,3);stem(abs(F1x3));subplot(2,2,4);stem(abs(F1x4));N3=256;F3x1=fft(x1,N3);F3x2=fft(x2,N3);F3x3=fft(x3,N3);F3x4=fft(x4,N3);w=2/N3*[0:N3-1];figuresubplot(2,2,1);plot(w,abs(F3x1));subplot(2,2,2);plot(w,abs(F3x2));subplot(2,2,3);plot(w,abs(F3x3));subplot(2,2,4);plot(w,abs(F3x4));N6=64;t=0:1/64:1/64*(N6-1);x6=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);figure;plot(x6)Fx6=fft(x6,N6);N=64w6=2/N6*[0:N6-1];figure;plot(w6,Fx6)实验二:用双线性法设计IIR数字滤波器clear all;close all;clcT=1;Wp=2/T*tan(0.2*pi/2);Ws=2/T*tan(0.3*pi/2);Rp=1;Rs=15;[N,Wc]=buttord(Wp,Ws,Rp,Rs,'s');[B,A]=butter(N,Wc,'s');[C,D]=bilinear(B,A,1/T);W=0:0.001*pi:0.5*pi;H=freqs(B,A,W);Hd=freqz(C,D,W);figuresubplot(3,1,1);plot(W/pi,abs(H))grid ontitle('模拟巴特沃斯滤波器')xlabel('Frequency/Hz')ylabel('Magnitude')subplot(3,1,2);plot(W/pi,abs(Hd))grid ontitle('数字巴特沃斯滤波器')xlabel('Didital Frequency/pi')ylabel('Magnitude')Hd_db=-20*log(abs(Hd(1)./(abs(Hd)+eps)));subplot(3,1,3);plot(W/pi,Hd_db)grid ontitle('数字巴特沃斯滤波器波特图')xlabel('Didital Frequency/pi')ylabel('bd_Magnitude')x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4.8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];M=512;fx=fft(x,M);y=filter(C,D,x);fy=fft(y,M);f=1/512*[0:511]*250figuresubplot(2,1,1);plot(x);subplot(2,1,2);plot(f,abs(fx));figuresubplot(2,1,1);plot(y);subplot(2,1,2);plot(f,abs(fy));心电图谱分析1、滤波前波形和频谱2、滤波后波形和频谱实验三:用窗函数法设计FIR数字滤波器一、N=33,用四种窗设计滤波器function hd=ideal(N,wc)for n=0:N-1if n==(N-1)/2hd(n+1)=wc/pi;else hd(n+1)=sin(wc*(n-(N-1)/2))/(pi*(n-(N-1)/2));endendclear all;close all;clcN=33;wc=pi/4;hd=ideal(N,wc);w1=boxcar(N);w2=hamming(N);w3=hann(N);w4=blackman(N);h1=hd.*w1';h2=hd.*w2';h3=hd.*w3';h4=hd.*w4';M=512;fh1=fft(h1,M);db1=-20*log10(abs(fh1(1)./(abs(fh1)+eps)));fh2=fft(h2,M);db2=-20*log10(abs(fh2(1)./(abs(fh2)+eps)));fh3=fft(h3,M);db3=-20*log10(abs(fh3(1)./(abs(fh3)+eps)));fh4=fft(h4,M);db4=-20*log10(abs(fh4(1)./(abs(fh4)+eps)));w=2/M*[0:M-1];figure;subplot(2,2,1);stem(h1);grid on;title('矩形窗');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh1));grid on;title('矩形窗');xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db1);grid on;title('矩形窗');xlabel('w');ylabel('20lg(H(k)/H(0))'); subplot(2,2,4);plot(w,angle(fh1)); grid on;title('矩形窗');xlabel('w');ylabel('相位特性');figure;subplot(2,2,1);stem(h2);grid on;title('汉宁窗');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh2)); grid on;title('汉宁窗');xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db2);grid on;title('汉宁窗');xlabel('w');ylabel('20lg(H(k)/H(0))'); subplot(2,2,4);plot(w,angle(fh2)); grid on;title('汉宁窗');xlabel('w');ylabel('相位特性');figure;subplot(2,2,1);stem(h3);grid on;title('海明窗');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh3)); grid on;title('海明窗');xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db3);grid on;title('海明窗');xlabel('w');ylabel('20lg(H(k)/H(0))'); subplot(2,2,4);plot(w,angle(fh3)); grid on;title('海明窗');xlabel('w');ylabel('相位特性');figure;subplot(2,2,1);stem(h4);grid on;title('布莱克曼窗');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh4)); grid on;title('布莱克曼窗');xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db4);grid on;title('布莱克曼窗');xlabel('w');ylabel('20lg(H(k)/H(0))'); subplot(2,2,4);plot(w,angle(fh4)); grid on;title('布莱克曼窗');xlabel('w');ylabel('相位特性');二,用一种窗采用N=15或N=33、w=pi/4设计滤波器clear all;close all;clcN=15;wc=pi/4;hd=ideal(N,wc);w1=blackman(N);h1=hd.*w1';M=512;fh1=fft(h1,M);db1=-20*log10(abs(fh1(1)./(abs(fh1)+eps)));w=2/M*[0:M-1];figure;subplot(2,2,1);stem(h1);grid on;title('布莱克曼窗(N=15)');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh1));grid on;title('布莱克曼窗(N=15)');xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db1);grid on;title('布莱克曼窗(N=15)');xlabel('w');ylabel('20lg(H(k)/H(0))');subplot(2,2,4);plot(w,angle(fh1));grid on;title('布莱克曼窗(N=15)');xlabel('w');ylabel('相位特性');N=33;wc=pi/4;hd=ideal(N,wc);w2=blackman(N);h2=hd.*w2';M=512;fh2=fft(h2,M);db2=-20*log10(abs(fh2(1)./(abs(fh2)+eps)));w=2/M*[0:M-1];figure;subplot(2,2,1);stem(h2);grid on;title('布莱克曼窗(N=33)');xlabel('n');ylabel('h(n)');subplot(2,2,2);plot(w,abs(fh2)); grid on;title('布莱克曼窗(N=33)'); xlabel('w');ylabel('H(k)');subplot(2,2,3);plot(w,db2);grid on;title('布莱克曼窗(N=33)'); xlabel('w');ylabel('20lg(H(k)/H(0))'); subplot(2,2,4);plot(w,angle(fh2)); grid on;title('布莱克曼窗(N=33)'); xlabel('w');ylabel('相位特性');三、提取50HZ基频信号N=512;t=0:1/512:1/512*(N-1);x=sin(100*pi*t)+sin(200*pi*t)+sin(300*pi*t); Fx=fft(x,N);w3=2/N*[0:N-1];figure;subplot(2,1,1);plot(x);grid on;title('抽样信号');xlabel('n');ylabel('y(n)');subplot(2,1,2);plot(w3,abs(Fx));grid on;title('抽样信号频谱');xlabel('pi');ylabel('Magnitude');N=33;wc=0.4;hd=ideal(N,wc);w1=boxcar(N);w2=blackman(N);h1=hd.*w1';y1=conv(x,h1);h2=hd.*w2';y2=conv(x,h2); figure;subplot(2,1,1);plot(y1(1:64)); grid on;title('矩形窗');xlabel('n');ylabel('y(n)');subplot(2,1,2);plot(y2(1:64)); grid on;title('布莱克曼窗');xlabel('n');ylabel('y(n)');Fy1=fft(y1,N);Fy2=fft(y2,N);figure;subplot(2,1,1);plot(abs(Fy1)); subplot(2,1,2);plot(abs(Fy2));。

数字信号处理,matlab实验报告

数字信号处理,matlab实验报告

Matlab实验报告实验一:1.实验Matlab代码:N=25;Q=0.9+0.3*j;WN=exp(-2*j*pi/N);x=zeros(25,1);format long; %长整型科学计数for k0=1:25x(k0,1)=Q^(k0-1);end;for k1=1:25;X1(k1,1)=(1-Q^N)/(1-Q*WN^(k1-1));end;X1;X2=fft(x,32);subplot(3,1,1);stem(abs(X1),'b.');axis([0,35,0,15]);title('N=25,formular');xlabel('n'); subplot(3,1,2);stem(abs(X2),'g.');axis([0,35,0,15]);title('N=32, FFT');xlabel('n');for(a=1:25)X3(a)=X1(a)-X2(a)end;subplot(3,1,3);stem(abs(X3),'r.');title('difference');xlabel('n');实验结果如图:实验结论:可以看出基2时间抽选的FFT算法与利用公式法所得到的DFT结果稍有偏差,但不大,在工程上可以使用计算机利用FFT处理数据。

2.实验Matlab代码:N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');实验结果如图:实验结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。

Matlab中的模拟和数字信号处理方法

Matlab中的模拟和数字信号处理方法

Matlab中的模拟和数字信号处理方法引言:Matlab是一种强大的计算软件工具,广泛应用于科学、工程和数学等领域。

在信号处理领域,Matlab提供了丰富的模拟和数字信号处理方法,极大地方便了信号处理的研究和应用。

本文将介绍一些主要的模拟和数字信号处理方法,以及它们在Matlab中的实现。

一、模拟信号处理方法:1. Fourier变换Fourier变换是一种重要的信号分析方法,可以将信号从时间域转换到频率域,从而揭示信号的频谱特性。

在Matlab中,可以使用fft函数进行傅里叶变换,ifft 函数进行逆傅里叶变换。

通过傅里叶变换,我们可以分析信号的频谱,包括频率成分、功率谱密度等。

2. 滤波滤波是信号处理中常用的方法,可以消除信号中的噪声或者选择感兴趣的频率成分。

在Matlab中,提供了丰富的滤波函数,包括低通滤波器、高通滤波器、带通滤波器等。

通过设计滤波器,我们可以选择不同的滤波方式,如巴特沃斯滤波、切比雪夫滤波等。

3. 时域分析时域分析是对信号在时间域上的特性进行研究,包括信号的振幅、频率、相位等。

在Matlab中,我们可以使用时域分析函数来计算信号的均值、方差、自相关函数等。

通过时域分析,可以更好地了解信号的时间特性,比如周期性、正弦信号等。

二、数字信号处理方法:1. 数字滤波器数字滤波器是将连续时间的信号转换为离散时间的信号,并对其进行滤波处理的一种方法。

在Matlab中,我们可以使用fir1、fir2等函数设计数字滤波器,以满足不同的滤波需求。

数字滤波器可以消除离散信号中的噪声,提取感兴趣的频率成分。

2. 频谱分析频谱分析是对离散信号的频谱进行研究,可以了解信号在频域上的特性。

在Matlab中,可以使用fft函数进行快速傅里叶变换,得到离散信号的频谱。

通过频谱分析,我们可以掌握信号的频率成分、频率幅度等信息。

3. 信号编码信号编码是将模拟信号转换为数字信号的过程,以进行数字信号处理和传输。

数字信号处理MATLAB实验报告

数字信号处理MATLAB实验报告
MATLAB提供了求离散时间系统频响特性的函数freqz,调用freqz的格式主要有两种。一种形式为
[H,w]=freqz(B,A,N)
其中,B与A分别表示 的分子和分母多项式的系数向量;N为正整数,默认值为512;返回值w包含 范围内的N个频率等分点;返回值H则是离散时间系统频率响应 在 范围内N个频率处的值。另一种形式为
[H,w]=freqz(B,A,N,’whole’)
与第一种方式不同之处在于角频率的范围由 扩展到 。
上机练习:
试用MATLAB的residuez函数,求出 的部分分式展开和。
b=[2 16 44 56 32];
a=[3 3 -15 18 -12];
[R,P,K]=residuez(b,a)
R =
+
zplane(B,A)
其中,B与A分别表示 的分子和分母多项式的系数向量。它的作用是在Z平面上画出单位圆、零点与极点。
与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数 与z域函数 之间的对应关系。因此,z变换的函数 从形式可以反映 的部分内在性质。我们仍旧通过讨论 的一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。
[R,P,K]=residuez(B,A)
其中,B,A分别表示X(z)的分子与分母多项式的系数向量;R为部分分式的系数向量;P为极点向量;K为多项式的系数。若X(z)为有理真分式,则K为零。
离散时间系统的系统函数定义为系统零状态响应的z变换与激励的z变换之比,即
(4-4)
如果系统函数 的有理函数表示式为
x=iztrans(z)
上式中的x和Z分别为时域表达式和z域表达式的符号表示,可通过sym函数来定义。
如果信号的z域表示式 是有理函数,进行z反变换的另一个方法是对 进行部分分式展开,然后求各简单分式的z反变换。设 的有理分式表示为

数字信号处理及matlab实现 pdf

数字信号处理及matlab实现 pdf

数字信号处理及matlab实现pdf
数字信号处理是一门研究如何对离散的数字信号进行分析、处理和变换的学科。

它在许多领域中都有广泛的应用,包括通信系统、音频处理、图像处理等。

Matlab是一种强大的数值计算和编程环境,可以用于数字信号处理的实现。

在Matlab中,有很多内置的函数和工具箱可以帮助我们进行数字信号的处理。

首先,我们可以使用Matlab读取和存储数字信号。

Matlab 提供了各种函数来读取不同类型的信号文件,比如wav文件、mp3文件等。

我们可以使用这些函数将信号加载到Matlab中进行后续处理。

同样,Matlab也提供了函数来将处理后的信号保存为文件。

其次,Matlab提供了许多常用的数字信号处理函数,例如滤波器设计、频谱分析、时频分析等。

我们可以利用这些函数对信号进行去噪、滤波、频谱分析等操作。

另外,Matlab还提供了许多工具箱,如信号处理工具箱、音频工具箱等,其中包含了更多高级的处理算法和函数。

此外,Matlab还支持自定义函数和算法的开发。

如果我们想要实现特定的数字信号处理算法,可以使用Matlab编写相应的代码。

Matlab具有简单易用的语法和丰富的函数库,可以帮助我们快速实现各种数字信号处理算法。

总之,通过Matlab实现数字信号处理可以获得高效、灵活
和可靠的结果。

无论是对于初学者还是专业人士来说,Matlab 都是一个非常强大和方便的工具。

Matlab实现数字信号处理(源代码)

Matlab实现数字信号处理(源代码)

1 编制程序产生单位抽样序列δ(n) 及δ(n﹣学号),并绘制出图形。

δ(n) %实现单位抽样序列δ(n)程序k=-30:30;delta=[zeros(1,30),1,zeros(1,30)];stem(k,delta)δ(n﹣学号)%实现单位抽样序列δ(n﹣22)程序k=-30:30;delta=[zeros(1,52),1,zeros(1,8)];stem(k,d2 编制程序产生单位阶跃序列u(n) 及u(n﹣学号)及u(n)﹣u(n﹣学号),并绘制出图形。

%实现单位阶跃序列u(n)程序k=-30:30;delta=[zeros(1,30),1,ones(1,30)]; stem(k,delta)%实现阶跃序列u(n﹣22)程序k=-30:30;delta=[zeros(1,52),1,ones(1,8)];stem(k,delta)%实现阶跃序列u(n)﹣u(n﹣22)程序k=-30:30;(1,52),1,ones(1,8)];stem(k,delta)3 编制程序产生正弦序列x(n)= 学号sin(2πn),x(n)= 学号sin(2πn/学号) 及x(n)= 学号sin(2n),并绘制出图形。

%实现正弦序列x(n)= 22sin(2πn)程序n=0:100;x=22*sin(2*n*pi);stem(n,x)%实现正弦序列x(n)= 22sin(2πn/22)程序Array n=0:100;x=22*sin(2*n*pi/22);stem(n,x)n=0:100;x=22*sin(2*n);stem(n,x)4 编制程序产生复指数序列x(n)= e j学号n,并绘制图形。

%实现复指数序列x(n)= ej22n程序n=0:50;x=exp(i*22).^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('相角');实部204060虚部0204060模0204060相角5编制程序产生指数序列x(n)= a n,并绘制出图形。

matlab信号处理——算法、仿真与实现

matlab信号处理——算法、仿真与实现

matlab信号处理——算法、仿真与实现MATLAB信号处理是一种广泛应用于各种工程领域的计算机语言和软件环境,其核心理念是用数字信号来处理实际的物理信号,使其在控制、通信、生物医学、天文学等应用中得到应用。

本文将简要介绍MATLAB信号处理的算法、仿真和实现。

算法:MATLAB信号处理的算法通常由两个主要部分组成:滤波和谱分析。

滤波是一种数字信号处理技术,可以从信号中过滤出所需的频率范围内的成分。

同时,还可以去除噪声和干扰信号,让信号更加清晰。

谱分析是一种用于检测信号频率组成的技术,可以将信号中不同频率的成分分解出来,并显示其功率谱和频率谱等分析结果。

MATLAB的信号处理工具箱中,有着很多种滤波和谱分析算法,比如数字滤波器设计、窗函数处理、FFT、STFT等等。

具体使用哪种算法,取决于所要处理的信号的特殊需要和噪声干扰的情况。

仿真:MATLAB信号处理提供了一种方便快捷的方式,将设计的算法模拟成一个完整的信号处理系统,以有效的验证其功能和正确性。

MATLAB的仿真工具包括仿真模型设计、数据可视化、参数调整等等,并可以集成其他MATLAB工具箱中的算法,如图像处理、统计分析等。

钟形图、波形图、频谱图等类型的可视化功能,让仿真数据的输出更加直观明了,以及可以快速检验算法和调整参数。

实现:MATLAB信号处理是通过在计算机中实现信号处理算法来实现的。

实现的具体方式,即设计一个MATLAB程序,将处理算法编写成代码并运行。

程序可以接受实时或离线信号,并对其进行处理和分析。

MATLAB的实现方式具有非常高的灵活性和可定制性,可以满足各种不同应用场景的需要。

总之,MATLAB信号处理可以通过对算法的选择、仿真的建模和实现的编写来完成,进而用于控制、通信、生物医学、天文学等各种应用中。

MATLAB在数字信号处理中的应用

MATLAB在数字信号处理中的应用

MATLAB在数字信号处理中的应用数字信号处理是一种基于数学算法来处理离散信号的技术。

数字信号处理在通信、图像处理、音频处理、生物医学和金融等领域都有广泛应用。

MATLAB是一个广泛用于科学和工程计算的强大工具,在数字信号处理方面也有卓越的表现。

它提供了很多函数,使得数字信号处理任务更加容易和高效。

在本文中,我们将探讨MATLAB在数字信号处理中的应用。

预处理数字信号处理中的第一步通常是预处理。

MATLAB提供了许多用于数字信号预处理的函数。

其中最常用的函数是filter。

filter函数可以用于过滤信号的高低频成分,其使用方法如下:y = filter(b, a, x)其中,x是输入信号向量,b和a是滤波器系数。

它们可以由用户提供或从信号中自动估计出来。

y是产生的输出信号向量。

filter函数一般用于数字滤波和信号分析。

用户可以根据具体需求调整滤波器系数来获得最佳结果。

除此之外,MATLAB还提供了其他的预处理函数。

例如,detrend函数可以用于去除信号中的线性趋势;resample函数可以用于改变信号的采样率等。

转换在数字信号处理中,信号通常需要在时域和频域之间进行转换。

MATLAB可以通过fft函数进行快速傅里叶变换。

fft函数的使用方法如下:Y = fft(X)其中,X是时域信号向量,Y是频域信号向量。

用户可以通过改变信号向量的长度来控制信号的频率分辨率和计算速度。

另外,ifft函数可以将频域信号向量转换回时域信号向量。

除了傅里叶变换外,MATLAB还提供了其他的信号转换函数。

例如,hilbert 函数可以生成信号的解析信号,diff函数可以计算信号的差分。

分析数字信号处理中,分析是一个非常重要的步骤。

MATLAB提供了很多用于数字信号分析的函数。

可以使用这些函数来计算各种统计和频率特性,以便更好地理解信号和识别信号中的模式。

其中,spcrv函数可以用于估计信号的功率谱密度。

其使用方法如下:[Pxx, F] = spcrv(X)其中,X是信号向量,Pxx是功率谱密度,F是对应的频率向量。

如何使用MATLAB进行数字信号处理

如何使用MATLAB进行数字信号处理

如何使用MATLAB进行数字信号处理数字信号处理(Digital Signal Processing,简称DSP)是利用数字技术对连续时间信号进行处理和分析的一种方法。

MATLAB作为一种强大的计算软件,具备丰富的信号处理工具箱,可以方便地进行数字信号处理的相关操作。

本文将介绍如何使用MATLAB进行数字信号处理的基本步骤和常用方法。

一、信号的表示与采样在数字信号处理中,首先需要对连续时间信号进行离散化,即将连续时间信号转换为离散时间信号。

通常采用采样(Sampling)的方式,通过在一段时间内定时获取信号的取样值来进行离散化。

MATLAB提供了信号的表示与采样的函数,如sine、square、sawtooth等,可以生成不同类型的信号。

使用这些函数生成信号,并可以通过设置参数来调整信号的幅度、频率等。

例如,生成正弦信号可以使用sine函数,如:```fs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量f = 10; % 信号频率x = sin(2*pi*f*t); % 生成正弦信号```以上代码生成了频率为10Hz的正弦信号,并将其存储在变量x中。

二、离散信号的分析与处理得到离散信号后,便可以对其进行进一步的分析与处理。

MATLAB提供了众多的函数和工具箱,可以方便地进行信号处理操作。

1. 时域分析通过计算信号的时域特性,我们可以了解信号的幅度、频率、相位等信息。

(1)绘制信号波形可以使用plot函数将离散信号的波形绘制出来。

例如,对于上述生成的正弦信号,可以使用以下代码绘制波形图:```plot(t,x);xlabel('时间');ylabel('幅度');title('正弦信号波形');```(2)计算信号的基本特性通过计算均值、方差、能量、功率等指标,我们可以了解信号的基本特性。

对于上述的正弦信号,可以使用以下代码计算信号的均值和能量:```mean_x = mean(x); % 计算信号的均值energy_x = sum(abs(x).^2)/length(x); % 计算信号的能量```2. 频域分析通过对信号进行傅里叶变换,我们可以将信号在频域上进行分析,了解信号的频率、谱形等信息。

用MATLAB实现数字信号处理

用MATLAB实现数字信号处理

摘要MATLAB(Matrix Laboratory-----矩阵实验室)是由美国Mathworks公司于1984年正式推出的一种以矩阵运算为基础的交互式程序语言。

与其他的语言相比她有着“简洁和智能化,适应科技专业人员的思维方式和书写习惯”的优点,所以为科技人员所乐于接受。

更因为它可适用于各种平台,并且随计算机硬、软件的更新而及时升级。

所以MATLAB逐渐成为当前我国大学教学和科学研究中一种非常重要的工具软件。

首先通过的MATLAB和DSP(Digital Signal Processing)------数字信号处理的简单概括,在第二章里利用MATLAB中几个简单而又强大的命令(比如:plot,函数的赋值,M函数等)来对数字信号处理中信号的取样和还原进行模拟。

本文先从理论上说明:原函数与冲激函数相乘得到的函数fs(t)其频谱是原函数频谱的无限个频移项组成,其幅值是原函数的1/Ts.而且,只有当取样频率fs大于原函数fm的两倍时,那么相后的频谱就不会混叠了,也就是说,取样函数(fs=f(t)*s(t))包含了原函数的全部信息。

那么我们就可以在接收端用一个低通滤波器(其频率响应的幅度是Ts),就可以把原信号还原出来了。

反之,如果采样的时候,采样频率小于2*fm,那么采样后得到的函数的频谱会出现混叠。

这样,采样函数就不能包括原函数的全部信息,使得接收断的低通滤波器所截取的信号不能真实的反映原函数。

关键词:MATLAB,DSP,取样频率,信号最高频率AbstractMATLAB(Matrix Laboratory)was a scientist computer language which was invented by the American company Mathworks in1984.This language is based on Matrix pared with other computer science languages,it has the advantages in its clearance in the expression of its language and fits the thinking method of many scientists.So,as the days goes by,it becomes an acceptable and enjoyable language for the scientists.For the most important aspects,it could be installed in many different operate systems and be updated its version according to the development of computer software and hardware,thus,MATLAB becomes an important teaching tools in many China university.In the first chapter,this article provides us an overall description of the MATLAB and DSP (Digital Signal Processing).Then,in the second chapter,this article use some simple but powerful commands to simulate the experiment of the sampling and reconstruction.The reader will find in the second chapter,the article first provides the theory why the signal could be reconstructed: when the sampling frequency(fs)is larger or equal than the two times of the maximum frequency of the signal(fm).Then,the sampling signal could include the whole information of the original signal and when we use a low pass filter in the end,we could reconstruction the original signal.Otherwise,if the fs<=2fm,the sampling signal could not provide us the whole information of the original signal,thus based on this we could not reconstruct the original signal.Key word:MATLAB,DSP,sampling frequency,the maximum frequency of the signal第一章绪论第一节MATLAB语言简介1.1.1MATLAB语言概述MATLAB(Matrix Laboratory-----矩阵实验室)是一种科学计算软件,适用于工程应用各领域的分析设计与复杂计算,它使用方便,输入简捷运算高效且内容丰富,很容易由用户自行扩展。

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

昆明理工大学信息工程与自动化学院学生实验报告(2011—2012 学年第二学期)课程名称:数字信号处理开课实验室:信自楼111 2012 年 5 月 31 日年级、专业、班生医学号姓名成绩实验项目名称数字信号处理的matlab 实现指导教师教师评语教师签名:年月日一.实验目的熟练掌握matlab的基本操作。

了解数字信号处理的MATLAB实现。

二.实验设备安装有matlab的PC机一台。

三.实验内容.1.求信号x(n)=cos(6.3Пn/3)+cos(9.7Пn/30)+cos(15.3Пn/30),0≤n≤29的幅度频谱.2. 用冲击响应不变法设计一个Butterworth低通数字滤波器,要求参数为:Wp=0.2Пαp=1dBWs=0.3Пαs=15dB3.用双线性变换法设计一个Chebyshev高通IIR滤波器,要求参数为:Wp=0.6Пαp=1dBWs=0.4586Пαs=15dB4.用窗函数法设计一个低通FIR滤波器,要求参数为:Wp=0.2Пαp=0.3dBWs=0.25Пαs=50dB5.用频率抽样法设计一个带通FIR滤波器,要求参数为:W1s=0.2П W1p=0.35П W2p=0.65П W2s=0.8Пαs=60dB αp=1dB6.根据 4 点矩形序列,( n ) = [1 1 1 1] 。

做 DTFT 变换,再做 4 点 DFT 变换。

然后分别补零做 8 点 DFT 及 16 点 DFT。

7.调用filter解差分方程,由系统对u(n)的响应判断稳定性8编制程序求解下列系统的单位冲激响应和阶跃响应。

y[n]+ 0.75y[n -1]+ 0.125y[n -2] = x[n]- x[n -1]四.实验源程序1.n=[0:1:29];x=cos(6.3*pi*n/30)+cos(9.7*pi*n/30)+cos(15.3*pi*n/30);subplot(2,2,1);stem(n,x);title('信号x(n),0<=n<=29');X=fft(x);magX=abs(X(1:1:16));k=0:1:15;subplot(2,2,2);stem(k,magX);title('FFT幅度');2.wp=0.2*pi; %通带边界数字频率(Hz)ws=0.3*pi; %阻带边界数字频率(Hz)Rp=1; %通带波动(dB)As=15; %阻带波动(dB)T=1; %取T=1OmegaP=wp*T; %模拟原型通带边界频率OmegaS=ws*T; %模拟原型阻带边界频率[cs,ds]=afd_butt(OmegaP,OmegaS,Rp,As);%调用模拟Butterworth滤波器的设计[b,a]=imp_invr(cs,ds,T); %调用模拟到数字滤波器转换函数%[b0,B,A]=dir2cas(b,a); %直接型转换为级联型系数的计算[H,w]=freqz(b,a,501); %调用计算频率特性函数mag=abs(H);pha=angle(H);subplot(2,2,1);plot(w/pi,mag);title('幅频特性');subplot(2,2,2);plot(w/pi,-pha/pi);title('相频特性');3.ws=0.4586*pi; %通带边界数字频率(Hz)wp=0.6*pi; %阻带边界数字频率(Hz)Rp=1; %通带波动(dB)As=15; %阻带衰减(dB)[N,wn]=cheb1ord(wp/pi,ws/pi,Rp,As);%Chebyshew滤波器参数计算[b,a]=cheby1(N,Rp,wn,'high'); %数字Chebyshew高通滤波器设计%[b0,B,A]=dir2cas(b,a); %直接型转换为级联型系数计算[H,w]=freqz(b,a,501); %调用计算频率特性函数mag=abs(H);pha=angle(H); %计算幅频和相频特性subplot(2,2,1);plot(w/pi,mag);title('幅频特性');subplot(2,2,2);plot(w/pi,-pha/pi);title('相频特性');4.p=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;n=[0:1:M-1];wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(hamming(M))';h=hd.*w_ham;[H,w]=freqz(h,[1],501);mag=abs(H);pha=angle(H);db=20*log10((mag+eps)/max(mag));delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)));As=-round(max(db(ws/delta_w+1:1:501)));subplot(2,2,1);stem(n,h);title('单位抽样响应');subplot(2,2,2);plot(w/pi,db);title('幅频特性(db)');Rp=-(min(db(1:1:wp/delta_w+1)))As=-round(max(db(ws/delta_w+1:1:501)))5.M=40;alpha=(M-1)/2;l=0:M-1;wl=(2*pi/M)*l;T1=0.109021;T2=0.59417456;Hrs=[zeros(1,5),T1,T2,ones(1,7),T2,T1,zeros(1,9),T1,T2,ones(1,7),T2,T1,zeros(1, 4)];Hdr=[0,0,1,1,0,0];wdl=[0,0.2,0.35,0.65,0.8,1];k1=0:floor((M-1)/2);k2=floor((M-1)/2)+1:M-1;angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];H=Hrs.*exp(j*angH);h=real(ifft(H,M));[db,mag,pha,grd,w]=freqz_m(h,1);[Hr,ww,a,L]=Hr_Type2(h);subplot(2,2,1);stem(l,h);title('单位抽样响应');subplot(2,2,2);plot(w/pi,db);axis([0,1,-100,10]);title('幅频特性')set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1]);6.% x(n)=[1 1 1 1],长度为4的离散序列,求DTFT[x(n)];n=0:3;x=[1 1 1 1];k=0:1000;w=(2*pi/1000)*k;X=x*(exp(-j*2*pi/1000)).^(n'*k);magX=abs(X);angX=angle(X);realX=real(X);imagX=imag(X);hold onfigure(1);subplot(2,1,1);plot(k/500,magX);gridxlabel('frequency in pi units');title('Magnitude Part of DTFT') subplot(2,1,2);plot(k/500,angX/pi*180);gridxlabel('freqency in pi units');title('Anagle Part of DTFT')hold off%N=4,x=[1 1 1 1] 求DFT[x(n)]N=4; k=0:N-1X=dft(x,N);magX=abs(X)phaX=angle(X)*180/pihold onfigure(2);subplot(2,1,1);stem(k,magX);gridxlabel('k');ylabel('|X(k)|');title('Magmitude of the DFT:N=4') subplot(2,1,2);stem(k,phaX);gridxlabel('k');ylabel('Degrees');title('Angle of the DFT:N=4')hold off% N=8 x=[1 1 1 1 0 0 0 0],在后面补4个0再求DFT.x=[1,1,1,1,zeros(1,4)];N=8;k=0:N-1X=dft(x,N);magX=abs(X)phaX=angle(X)*180/pihold onfigure(3);subplot(2,1,1);stem(k,magX);gridxlabel('k');ylabel('|X(k)|');title('Magmitude of the DFT:N=8')subplot(2,1,2);stem(k,phaX);gridxlabel('k');ylabel('Degrees');title('Angle of the DFT:N=8')hold off% N=16 x=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0], 在后面补12个零后求DFT. x=[1,1,1,1,zeros(1,12)];N=16;k=0:N-1X=dft(x,N);magX=abs(X)phaX=angle(X)*180/pihold onfigure(4);subplot(2,1,1);stem(k,magX);gridxlabel('k');ylabel('|X(k)|');title('Magmitude of the DFT:N=16')subplot(2,1,2);stem(k,phaX);gridxlabel('k');ylabel('Degrees');title('Angle of the DFT:N=16')hold off7.A=[1,-0.9];B=[0.05,0.05]; %系统差分方程系数向量B和Ax1n=[1 1 1 1 1 1 1 1 zeros(1,60)]; %产生信号x1(n)=R8(n)x2n=ones(1,60); %产生信号x2(n)=u(n)hn=impz(B,A,40); %求系统单位脉冲响应h(n)subplot(3,1,1);stem(hn,'.'); %调用函数tstem绘图title('(a) 系统单位脉冲响应h(n)');box ony1n=filter(B,A,x1n); %求系统对x1(n)的响应y1(n)subplot(3,1,2);stem(y1n,'.');title('(b) 系统对R8(n)的响应y1(n)');box ony2n=filter(B,A,x2n); %求系统对x2(n)的响应y2(n)subplot(3,1,3);y='y2(n)';stem(y2n,'.');title('(c) 系统对u(n)的响应y2(n)');box on8.clear;n=[-20:20];b=[1,-1];a=[1,0.75,0.125];x1=(n==0);y1=filter(b,a,x1)附:前面用到的函数(1)function [b,a]=afd_butt(Wp,Ws,Rp,As);if Wp<=0error('Passband edge must be large than 0')endif Ws<=Wperror('stopband edge must be larger than Passband edge ')endif (Rp<=0)||(As<0)error('PB ripple and/or SB attenuation must be larger than 0 ') endN=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(Wp/Ws))); fprintf('\n***Butterworth Filter Order =%2.0f\n',N)OmegaC=Wp/((10^(Rp/10)-1)^(1/(2*N)));[b,a]=u_buttap(N,OmegaC);(2)function [b0,B,A]=dir2cas(b,a);b0=b(1);b=b/b0;a0=a(1);a=a/a0;b0=b0/a0;M=length(b);N=length(a);if N>Mb=[b zeros(1,N-M)];else if M>Na=[a zeros(1,M-N)];N=M;elseNM=0;endK=floor(N/2);B=zeros(K,3);A=zeros(K,3);if K*2==N;b=[b 0];a=[a 0];endbroots=cplxpair(roots(b));aroots=cplxpair(roots(a));for i=1:2:2*KBrow=broots(i:1:i+1,:);Brow=real(poly(Brow));B(fix((i+1)/2),:)=Brow;Arow=aroots(i:1:i+1,:);Arow=real(poly(Arow));A(fix((i+1)/2),;)=Arow;end(3)function [db,mag,pha,grd,w] = freqz_m(b,a);% Modified version of freqz subroutine% ------------------------------------% [db,mag,pha,grd,w] = freqz_m(b,a);% db = Relative magnitude in dB computed over 0 to pi radians % mag = absolute magnitude computed over 0 to pi radians% pha = Phase response in radians over 0 to pi radians% grd = Group delay over 0 to pi radians% w = 501 frequency samples between 0 to pi radians% b = numerator polynomial of H(z) (for FIR: b=h)% a = denominator polynomial of H(z) (for FIR: a=[1])%[H,w] = freqz(b,a,1000,'whole');H = (H(1:1:501))'; w = (w(1:1:501))';mag = abs(H);db = 20*log10((mag+eps)/max(mag));pha = angle(H);% pha = unwrap(angle(H));grd = grpdelay(b,a,w);% grd = diff(pha);% grd = [grd(1) grd];% grd = [0 grd(1:1:500); grd; grd(2:1:501) 0];% grd = median(grd)*500/pi;(4)function [Hr,w,b,L] = Hr_Type2(h);% Computes Amplitude response of Type-2 LP FIR filter% ---------------------------------------------------% [Hr,w,b,L] = Hr_Type2(h)% Hr = Amplitude Response% w = frequencies between [0 pi] over which Hr is computed % b = Type-2 LP filter coefficients% L = Order of Hr% h = Type-2 LP impulse response%M = length(h);L = M/2;b = 2*[h(L:-1:1)];n = [1:1:L]; n = n-0.5;w = [0:1:500]'*pi/500;Hr = cos(w*n)*b';(5)function hd=ideal_lp(wc,M)alpha=(M-1)/2;n=[0:1:(M-1)];m=n-alpha+eps;hd=sin(wc*m)./(pi*m);(6)function[b,a]=imp_invr(c,d,T)[R,p,k]=residue(c,d);p=exp(p*T);[b,a]=residuez(R,p,k);b=real(b');a=real(a')(7)function [b,a]=u_buttap(N,OmegaC)[z,p,k]=buttap(N);p=p*OmegaC;k=k*OmegaC^N;B=real(poly(z));b=k*B;b0=k;a=real(poly(p));五.实验结果1.实验内容1的运行结果如下图所示:2.实验内容2的运行结果如下所示:a=1.0000 -3.3635 5.0684 -4.2759 2.1066 -0.5706 0.06613.实验内容3的运行结果如下所示:4.实验内容4的运行结果如下所示:Rp =0.0357As = 505.实验内容5的运行结果如下所示:6.实验内容6的运行结果如下所示:k =0 1 2 37.实验内容7的运行结果如下所示:8.实验内容8的运行结果如下所示:六.总结体会这次实验让我获益匪浅,它让我深刻体会到实验前的理论知识准备的重要性。

相关文档
最新文档