信号处理算法综合实验(matlab)
数字信号处理实验报告-FFT算法的MATLAB实现

数字信号处理 实验报告实验二:FFT 算法的MATLAB 实现一、实验目的通过本实验的学习,掌握离散傅立叶变换的理论,特别是FFT 的基本算法以及其在在数字信号处理中的应用。
二、实验内容题一:若x(n)=cos(n*pi/6)是一个N =12的有限序列,利用MATLAB 计算它的DFT 并画出图形。
题二:一被噪声污染的信号,很难看出它所包含的频率分量,如一个由50Hz 和120Hz 正弦信号构成的信号,受均值随机噪声的干扰,数据采样率为1000Hz ,对这污染信号进行傅立叶变换,以检查所包含的频率分量题三:调用原始语音信号mtlb ,对其进行FFT 变换后去掉幅值小于1的FFT 变换值,最后重构语音信号。
(要求有四幅语音信号的频谱图在同一图形窗口以便比较:分别是1、原始语音信号;2、FFT 变换;3去掉幅值小于1的FFT 变换值;4、重构语音信号)三、实验原理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 x2、基2的FFT 算法四、实验条件(1)微机(2)MATLAB 编程工具五、用matlab 程序实现:实验一: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');实验二clc;fs=1000;N=1024;n=0:N-1;t=n/fs;x=sin(2*pi*50*t)+sin(2*pi*120*t)+rand(1,N);y=fft(x,N);mag=abs(y);f=n*fs/N;subplot(1,2,1),plot(f,mag);xlabel('频率/Hz');ylabel('振幅');title('N=1024');subplot(1,2,2),plot(f(1:N/2),mag(1:N/2)); xlabel('频率/Hz');ylabel('振幅');title('N=1024');实验三:clc;load mtlbN=1500;subplot(2,2,1)plot([1:N],mtlb(1:N));title('原始语音信号');y=fft(mtlb(1:N));subplot(2,2,2)plot([1:N],y);title('原始语音信号FFT变换');y(y<1)=0;subplot(2,2,3)plot([1:N],y);title('去掉幅值小于1的FFT变换值');subplot(2,2,4)plot([1:N],ifft(y));title('重构语音信号');六、实验心得:(1)通过这次实验,掌握离散傅立叶变换的理论,特别是FFT的基本算法以及其在在数字信号处理中的应用。
Matlab数字信号处理——综合实验报告

实验题目:用Matlab语言编程实现学生成绩管理系统一、实验目的1.掌握建立和执行M文件的方法,学会M函数的编写及其调用,掌握多种函数类型;2.学习Matlab中的关系运算和逻辑运算,掌握它们的表达形式和用法;3.掌握Matlab中的选择结构和循环结构;4.学习使用帮助文档查找更多的Matlab功能;5.掌握Matlab的基本绘图命令,学习运用Matlab绘制一维、二维、三维图形的方法。
二、实验要求1.使用函数(多个函数M文件)进行分析和设计;2.要使用到以下函数类型:主函数、子函数、私有函数。
三、实验内容功能内容:1.学生信息为:学号、姓名、三门课成绩(英语、数学、物理);2.从键盘输入学生成绩,建立信息库;3.从文件读入学生信息;4.显示信息库中的所有学生的信息;5.将学生成绩信息库保存为文件;6.根据学号查询某一个学生的成绩统计信息:三门课成绩、总分、平均分;7.根据学号将某一个学生的信息从信息库删除;8.新增一个学生的信息;9.按总分成绩从高到低排序输出学生信息;10.图形输出所有学生成绩统计信息(饼图pie、柱状图bar)。
四、实验设计及分析1 主函数的设计及分析主函数主要用于显示学生管理系统的主界面,以及通过对其他几个私有函数的调用来实现相应的功能。
主函数名为zonghe(),首先利用disp()屏幕输出函数来提示用户如何使用该管理系统。
然后通过input()输入函数输入字符,通过判断输入的字符与哪个私有函数对应的字符匹配来调用相应的私有函数实现相应的功能。
其中将条件语句放入while循环中,使系统能循环运行直到用户输入‘H‘才跳出循环。
主函数zonghe()的源代码:function zonghe()disp('Welcome to the students'' information library!');disp('Input A to input students'' information');disp('Input B to display all students'' information');disp('Input C to search a stuedent''s information');disp('Input D to delete a stuedent''s information');disp('Input E to add a new stuedent''s information');disp('Input F to display stuedents'' information from high to low of total score');disp('Input G to graphical display all stuedents'' information'); disp('Input H to exit');x=input('Please input the FUNCTION NUMBER:','s');while x~='H'if x=='A'disp('Input students'' information.');ztest();elseif x=='B'disp('Display all students'' information.');displaytest();elseif x=='C'disp('Search a stuedent''s information.');search();elseif x=='D'disp('Delete a stuedent''s information.');shanchu();elseif x=='E'disp('Add a new stuedent''s information.');add();elseif x=='F'disp('Display stuedents'' information from high to low of total score.');paixu();elseif x=='G'disp('Graphical display all stuedents'' information.');tuxing();elseif x=='H'disp('Thank you for using the students'' information library!');break;elsedisp('Invalid function number. Program is terminated!');endx=input('\nPlease input the FUNCTION NUMBER:','s');endend2 七个私有函数的设计与分析2.1 function ztest()的设计与分析ztest()函数实现从键盘输入学生成绩建立信息库的功能。
信号处理实验报告

信号处理实验报告实验目的:通过实验了解信号处理的基本原理和方法,并掌握使用MATLAB进行信号处理的基本操作。
实验原理:信号处理是指对模拟信号或数字信号进行分析、处理、提取有用信息的过程。
信号处理包括信号的采集、滤波、降噪、特征提取等核心内容。
MATLAB 是一种功能强大的数学软件,也是信号处理的常用工具。
通过使用MATLAB,可以对信号进行快速、准确的处理和分析。
实验过程:1. 使用MATLAB生成一个正弦信号,频率为100Hz,幅值为1,时长为1s。
matlabt = 0:0.001:1;f = 100;x = sin(2*pi*f*t);2. 绘制该信号的时域图像。
matlabfigure;plot(t, x);xlabel('时间(s)');ylabel('幅值');title('正弦信号的时域图像');3. 使用MATLAB进行频谱分析。
matlabN = length(x);f = (0:N-1)*(1/N);X = fft(x);P = abs(X).^2/N;figure;plot(f,P);xlabel('频率(Hz)');ylabel('功率谱密度');title('信号的频谱图像');4. 对信号进行滤波,去除高频成分。
matlabfs = 1000;Wp = 200/(fs/2);Ws = 300/(fs/2);Rp = 3;Rs = 60;[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs); [b,a] = cheby2(n,Rs,Ws);y = filter(b,a,x);figure;plot(t,y);xlabel('时间(s)');ylabel('幅值');title('去除高频成分后的信号');5. 对滤波后的信号进行降噪处理。
信号分析与处理实验(MATLAB)

例:Chebyshev I型数字滤波器设计
通带截止频率wp,阻带截止频率ws,
通带最大衰减rp,阻带最小衰减rs. 假设各参数: wp=30*2 *pi; ws=40*2* pi; Fs=100;
rp=0.3;
rs=80;
例1:Chebyshev I型数字滤波器设计
1. 2. 3. 4.
实验安排
1、信号的产生与运算; 2、连续与离散信号的频谱分析; 3、连续与离散系统分析、滤波; 4、信号处理程序设计;(设计性) (卷积、相关、窗函数、DFT、FFT*) 5、数字滤波器的设计与滤波; 6、wav音频信号的读写与处理。
1、信号的产生与运算
实验目的:掌握用Matlab产生基本信号、绘制波形、实 现基本运算。
Matlab程序举例2:计算卷积
直接计算 x1=[ones(1,5) zeros(1,27) ]; x2=[ones(1,10) zeros(1,22) ]; y1=conv(x1,x2);
用卷积定理 X1=fft(x1,32); X2=fft(x2,32); Y=X1.*X2; y2=real(ifft(Y)); subplot(2,1,1); stem(y1); subplot(2,1,2); stem(y2);
5.
6.
7.
选择阶数: [N, Wn]=cheb1ord(wp, ws, rp, rs, 's'); 创建Chebyshev I型滤波器原型:[z,p,k]=cheb1ap(N,rp); 表达形式从零极点增益形式转换成状态方程形式: [A, B, C, D]=zp2ss(z,p,k); 把模拟低通滤波器原型转换成模拟低通滤波器: [At, Bt, Ct, Dt]=lp2lp(A, B, C, D, Wn); 表达形式从状态方程形式转换成传递函数形式: [num1 ,den 1]=ss2tf(At,Bt,Ct,Dt); 采用冲激响应不变法将模拟滤波器转换成数字滤波器: [num2,den2]=impinvar(num1 ,den1, Fs); 返回数字滤波器的频率响应: [H, W]=freqz(num2,den2,N)
Matlab数字信号处理实验报告

Matlab数字信号处理实验报告本次实验使用MATLAB进行数字信号处理操作,目的是熟悉MATLAB中数字信号处理的相关工具箱,并进一步理解数字信号处理的基本概念和算法。
一、实验内容1.信号的生成与显示2.时域分析和频域分析3.滤波器设计4.数字滤波器性能分析二、实验步骤在MATLAB中,使用sawtooth函数生成一个锯齿波信号,并使用plot函数进行时域波形的显示。
代码如下:f = 1000;fs = 40000;t = 0:1/fs:0.01;y = sawtooth(2*pi*f*t);plot(t,y);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave');时域分析包括波形的观察和参数分析,如幅值、均值、方差等。
频域分析则是对信号进行傅里叶变换,得到其频谱图,包括频率分布和强度分布。
%时域分析amp = max(y)-min(y);mean_y = mean(y);var_y = var(y);设计一个低通滤波器,将高于1kHz的频率成分滤掉。
对滤波后的信号进行时域分析和频域分析,比较滤波前后信号的特征参数和频谱特征,并绘制原始信号、滤波后信号及其频谱图。
subplot(2,2,1);plot(t,y);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave');subplot(2,2,2);plot(t,y_filt);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave After Filter');subplot(2,2,3:4);plot(f2,fft_y_filt,'r',f,fft_y,'g');xlabel('Frequency (Hz)');ylabel('Amplitude');title('Sawtooth Wave Spectrum Comparison');legend('After Filter','Before Filter');三、实验结果与分析通过生成并显示一段锯齿波信号,并对其进行时域和频域分析,可以得到该信号的关键信息,如幅值、均值、方差和频率分布特性。
MATLAB综合实验报告

实验七综合实验一.实验目的能综合利用信号处理的理论和Matlab工具实现对信号进行分析和处理(1)熟练对信号进行时域和频域分析;(2)熟练进行滤波器设计和实现;(3)掌握对信号的滤波处理和分析。
二.实验原理设计并实现滤波器对信号进行分析和处理是信号处理课程学习的主要内容。
通过对信号进行频谱分析,能发现信号的频率特性,以及组成信号的频率分量。
对信号进行滤波处理,能改善信号的质量,或者为数据处理(如传输,分类等)提供预处理,等。
本次实验是对特定信号进行分析并进行滤波处理,需要综合应用之前的实验内容,主要有以下几个方面。
(1)离散时间信号与系统的时域分析Matlab为离散时间信号与系统的分析提供了丰富且功能强大的计算函数和绘图分析函数,便于离散时间信号和系统的时域表示和分析。
(2)信号的频域分析信号处理课程主要学习了离散信号和系统的频域分析方法与实现,以及滤波器的设计与实现。
离散信号与系统的频域分析包括DTFT、DFT、Z变换等,FFT则是DFT的快速实现。
用Matlab分析信号的频谱可以用freqz函数或者FFT函数。
(3)滤波器设计滤波器的设计首先要确定滤波器的类型,即低通、高通、带通还是带阻。
滤波器的边缘频率可以通过对信号的频谱分析得到,滤波器的幅度指标主要有阻带最小衰减As和通带最大衰减Ap。
一般来说,As越大,对截止通过的频率分量的衰减越大;Ap越小,对需要保留的频率分量的衰减越小。
因此,As越大,Ap越小,滤波器的性能越好,但随之而来,滤波器的阶数越大,实现的代价(包括计算时间和空间)越大。
由此,滤波器的设计需要对滤波器性能和实现代价进行均衡考虑。
另外根据冲激响应的长度可以分为IIR和FIR两种类型。
两种类型的滤波器各有特点。
用FIR滤波器可以设计出具有严格线性相位的滤波器,但在满足同样指标的条件下,FIR滤波器的阶数高于IIR滤波器。
Matlab为各种类型的滤波器的设计提供了丰富的函数,可以借助这些函数方便地设计出符合要求地滤波器。
信号处理与MATLAB实践 实验报告

北京工业大学信号处理与MATLAB实践实验报告班级:140200学生姓名:陈艺飞学号:14020016指导教师:孙中华、张延华完成时间:2016.12目录一、任选题 (3)1、作业要求 (3)2、流程图 (3)3、解题步骤 (4)4、运行环境matlab (8)5、运行代码汇总 (8)二、双号必选题: (10)1、题目1 (10)2、题目2 (15)三、心得与体会 (17)一、任选题1、作业要求作业-1太阳黑子活动周期的分析太阳黑子的活动是周期的,大约每11年达到一个爆发高峰。
试证明这一点。
设计提示:①首先下载太阳黑子的数据,可以从比利时皇家天文台(Royal Observatory of Belgium)的太阳影响数据分析中心(Solar Influences Data Analysis Center-SIDC)下载,网址是:http://sidc.oma.be/index.php3下载数据的时间段可以从1741年1月一直到当前。
②以横坐标表示年份,纵坐标表示黑子出现的数量,绘制Wolfer图。
③、应用FFT技术分析Wolfer数,在复平面上可以直接绘制出由Y给出的傅立叶系数的分布图。
④、绘制周期图(Y的模的平方被定义为功率,功率与频率的关系曲线则被定义为周期图)。
注:要获得太阳黑子的活动周期,你可以使用月度数据。
该数据可以通过点击太阳影响数据分析中心网页左边的导航条Sunspots→download of data→monthly and monthly smoothed sunspot number下载。
下载的数据文件的第1列是年和月,第3列是该月太阳黑子的平均数,第4列是平滑后该月太阳黑子的平均数。
为了分析太阳黑子的活动规律,即可以取任一时间段的数据,也可以取下载的全部数据。
为分析方便,建议用Excel将数据文件读进表格并且存到MATLAB工作路径。
2、流程图Wofler数时域图FFT变换功率谱密度(功率-频率)功率谱密度标出周期3、解题步骤①下载自http://sidc.oma.be/silso/datafiles页面内的Total sunspot number——Yearly mean total sunspot number [1700 - now],CSV格式,并将其根据Matlab语法要求将其重命名为a14020016.csv。
MATLAB信号处理仿真实验

3 信号处理仿真实验(教师)3.1 MATLAB信号处理基础实验一、实验目的1.掌握MATLAB常用信号处理波形;2.学习信号序列的各种操作;3.学习离散傅立叶变换的MATALB相关操作。
二、实验内容1.产生下列各种波形,并记录结果。
(1)单位抽样序列x=[1 zeros(1,n-1)]>> n=7;>> x=[1 zeros(1,n-1)]x =1 0 0 0 0 0 0(2)单位阶跃矩阵x=ones(1,N)>> N=6;>> x=ones(1,N)x =1 1 1 1 1 1(3)实指数序列n=0:N-1;x=a.^n;>> a=6;>> N=6;>> n=0:N-1;>> x=a.^nx =1 6 36 216 1296 7776(4)复指数序列n=0:N-1;x=ex((lu+j*w0)*n);>> N=6;lu=3;w0=40;n=0:N-1;x=exp((lu+j*w0)*n)x =1.0e+006 *0.0000 -0.0000 + 0.0000i -0.0000 - 0.0004i0.0066 + 0.0047i -0.1588 + 0.0357i 1.5926 - 2.8548i(5)随机序列rand(1,N);randn(1,N);>> N=6;>> rand(1,N)ans =0.4565 0.0185 0.8214 0.4447 0.6154 0.7919 >> randn(1,N)ans =1.1892 -0.0376 0.3273 0.1746 -0.1867 0.7258 (6)方波t=0:0.1*pi:6*pi;y=square(t);axis([0 7*pi -1.5 1.5]);plot(t,y);xlabel('时间');ylabel('幅值');(7)正弦波t=0:0.01*pi:2*pi;x=sin(2*pi*t);plot(t,x);xlabel('时间');ylabel('幅值');(8)锯齿波Fs=10000;t=0:1/Fs:1.5;x=sawtooth(2*pi*50*t);plot(t,x);axis([0 0.2 -1 1]);(9)基本非周期波形t=0:1/1000:2;x=chirp(t,0,1,150);specgram(x,256,1000,256,250);(10)sinc信号t=linspace(-5,5);x=sinc(t);plot(t,x);(11)pulstran信号t=0:1/50E3:10E-3;d=[0:1/1E3:10E-3;0.8.^(0:10)]';x=pulstran(t,d,'gauspuls',10E3,0.5);plot(t,x);(12)diric信号t=[-4*pi:0.1/pi:4*pi];x=diric(t,7);y=diric(t,8);subplot(1,2,1);title('n为奇数');plot(t,x);subplot(1,2,2);plot(t,y);title('n为偶数');2.有两信号分别为)2sin(11t x πω=,)2sin(222t x πω=,其中Hz501=ω,Hz1202=ω,编程实现此二信号的叠加,并计算它的抽样和、抽样积、信号能量和信号功率。
信号分析与处理MATLAB仿真实验报告

信号分析与处理MATLAB仿真实验报告2009.12.25院系:电气工程学院专业: 自动化班级:姓名:学号:实验7 离散时间序列的卷积实验目的:学会用MATLAB实现对离散时间序列的卷积,掌握利用h(n) 与输入x(n)卷积来求系统零状态响应的方法。
实验要求:使用MATLAB中求卷积函数的conv(),并对结果分析总结。
实验内容:LTI系统的单位脉冲响应为h(n)=(0.9)n ε(n),输入序列为x(n)=ε(n)- ε(n-10),求系统的输出y(n)。
程序function [y,ny]=conv_m(x,nx,h,nh);y=conv(x(5:45),h);ny=nh;y=y(1:41);subplot(3,1,1);stem(nx,x,'filled');axis([-4,40,0,1]);title('x[n]');subplot(3,1,2);stem(nh,h,'filled');axis([-4,40,0,1]);title('h[n]');subplot(3,1,3);stem(ny,y,'filled');axis([-4,40,0,8]);title('y[n]');实验结果:结果分析:改变参数以后的程序:function [y,ny]=conv_m(x,nx,h,nh);y=conv(x(5:45),h);ny=nh;y=y(1:41);subplot(3,1,1);stem(nx,x,'filled');axis([-4,40,0,1]);title('x[n]'); subplot(3,1,2);stem(nh,h,'filled');axis([-4,40,0,1]);title('h[n]'); subplot(3,1,3);stem(ny,y,'filled');axis([-4,40,0,2]);title('y[n]');输出结果:实验8 连续时间信号的卷积实验目的:学会用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)

武汉工程大学电气信息学院2、四、思考:1、为什么图二中t=0处曲线是间断的,如何使其成为连续的曲线?因为axis函数对纵坐标的的上边界限定过小,使图形在边界处不能完整的显示。
2.3.四、思考:1、代数运算符号*和.*的区别是?*是矩阵相乘,是矩阵A行元素与B的列元素相乘的和.*是数组相乘,表示数组A和数组B中的对应元素相乘实验内容实验三连续时间信号的卷积一、实验内容1、已知两连续时间信号如下图所示,绘制信号f1(t)、f2(t)及卷积结果f(t)的波形;设时间变化步长dt分别取为0.5、0.1、0.01,当dt取多少时,程序的计算结果就是连续时间卷积的较好近似?2.实验内容1.2.实验内容实验五 连续时间信号的频域分析一、实验内容1、如图5.4所示的奇谐周期方波信号,周期为T1=1,幅度为A=1,将该方波信号展开成三角形式Fourier 级数并分别采用频域矩形窗和Hanning 窗加权,绘制两种窗函数加权后的方波合成图像。
时间范围取为-2~2,步长值取为0.01。
2、将图5.5中的锯齿波展开为三角形式Fourier 级数,按(2)式求出Fourier 级数的系数,并在频域分别采用矩形窗、Hanning 窗和三角窗加权,观察其Gibbs 效应及其消除情况。
时间范围取为-2~2,步长值取为0.01。
3、选做:编程计算连续时间周期信号的三角形式傅里叶级数展开的系数二、实验方法与步骤1、将方波信号展开成三角形式Fourier 级数并分别采用频域矩形窗和Hanning 窗加权 方波展开的三角式傅立叶级数为:()()t k k t x L k 1,5,3,1sin 4ωπ⋅∑=∞= 采用频域矩形窗加权,则展开式变为:()()()[]t k k t x K k 1012sin 124ωπ+⋅+∑==a0=2/T*int(f,t,0,T); %求函数f对t从0到T的定积分a0=simplify(a0) %得出结果syms kfa=t*cos(k*w*t);fb=t*sin(k*w*t);ak=2/T*int(fa,t,0,T); %求函数fa对t从0到T的定积分bk=2/T*int(fb,t,0,T); %求函数fb对t从0到T的定积分ak=simplify(ak)bk=simplify(bk)三、实验数据与结果分析1.2.3.根据绘制的幅频特性曲线,系统具有低通滤波特性2.根据绘制的幅频特性曲线,系统具有带通滤波特性。
Matlab数字信号处理实验报告材料

数字信号处理实验报告基础实验篇实验一离散时间系统及离散卷积一、实验原理利用Matlab软件计算出系统函数的零极点分布、单位脉冲响应和系统频率响应等的图像并于笔算结果进行比较,找出异同。
编译合适程序能计算取值范围不同的离散卷积。
二、实验目的(1)熟悉MATLAB软件的使用方法。
(2)熟悉系统函数的零极点分布、单位脉冲响应和系统频率响应等概念。
(3)利用MATLAB绘制系统函数的零极点分布图、系统频率响应和单位脉冲响应。
三、实验步骤(1)自编并调试实验程序,并且,给实验程序加注释;(2)按照实验内容完成笔算结果;(3)验证计算程序的正确性,记录实验结果。
(4)至少要求一个除参考实例以外的实验结果,在实验报告中,要描述清楚实验结果对应的系统,并对实验结果进行解释说明。
四、实验源程序及实验结果实验二 离散傅立叶变换与快速傅立叶变换一、 实验原理对有限长序列使用离散Fouier 变换(DFT)可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N 时,它的DFT 定义为()()[]()∑==-=1N n nk N W n x n x DFT k X 10-≤≤N k反变换为()()[]()∑==-=-101N n nkN W k X N k X IDFT n x 10-≤≤N n 有限长序列的DFT 是其Z 变换在单位圆上的等距采样,或者说是序列Fourier 变换的等距采样,因此可以用于序列的谱分析。
FFT 是为了减少DFT 运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干较短序列的组合,从而减少运算量。
常用的FFT 是以2为基数的,其长度。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT ,可以用末位补零的方法,使其长度延长至2的整数次方。
用FFT 可以实现两个序列的圆周卷积。
在一定的条件下,可以使圆周卷积等于线性卷积。
数字信号处理MATLAB实验报告

[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信号处理实验报告

matlab信号处理实验报告Matlab信号处理实验报告引言信号处理是一门研究如何获取、分析、变换和解释信号的学科。
在现代科技的发展中,信号处理在许多领域都扮演着重要的角色。
本文将以Matlab为工具,进行信号处理实验,并对实验结果进行分析和讨论。
实验一:信号的采样和重构在信号处理中,采样是指将连续时间的信号转化为离散时间的信号。
重构则是将离散时间的信号恢复为连续时间的信号。
我们选取了一个正弦信号进行实验。
首先,我们生成一个频率为10Hz的正弦信号,并对其进行采样。
使用Matlab的函数进行采样,可以得到离散时间的信号。
接下来,我们对采样后的信号进行重构。
使用Matlab的函数进行重构,可以得到连续时间的信号。
通过实验,我们可以观察到采样和重构过程中的信号失真情况。
信号的采样频率越高,重构后的信号越接近原始信号。
这是因为高采样频率可以提供更多的采样点,从而更好地还原原始信号。
实验二:信号的频谱分析频谱分析是信号处理中常用的一种方法,用于分析信号的频率成分。
我们选取了一个复杂的信号进行频谱分析。
首先,我们生成一个由多个正弦信号叠加而成的复杂信号。
使用Matlab的函数进行信号合成,可以得到复杂信号。
接下来,我们对复杂信号进行频谱分析。
使用Matlab的函数进行频谱分析,可以得到信号的频谱图。
通过实验,我们可以观察到复杂信号的频谱图中的不同频率成分。
频谱图上的峰值表示信号中的主要频率成分,而峰值的高度表示该频率成分的强度。
通过频谱分析,我们可以了解信号的频率特性,进而对信号进行进一步处理和分析。
实验三:信号的滤波处理滤波是信号处理中常用的一种方法,用于去除信号中的噪声或不需要的频率成分。
我们选取了一个包含噪声的信号进行滤波处理。
首先,我们生成一个包含噪声的信号。
使用Matlab的函数生成噪声信号,并将其与原始信号叠加,可以得到包含噪声的信号。
接下来,我们对包含噪声的信号进行滤波处理。
使用Matlab的函数进行滤波处理,可以得到去除噪声后的信号。
《数字信号处理》Matlab实验

《数字信号处理》Matlab 实验一.离散信号的 FFT 分析1.用Matlab 编程上机练习。
已知:N=2^5。
这里Q=0.9+j0.3。
可以推导出 ,首先根据这个式子计算X(k)的理论值,然后计算输入序列x(n)的32个值,再利用基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值比较(要求计算结果最少6位有效数字)。
解:函数代码:>> function xn()>> format long>> q=0.9+0.3*i;>> wn=exp(-2*pi*i/32);>> xk=(1-q^32)./(1-q*wn.^[0:31])>>xn=q.^[0:31]>> xk1=fft(xn,32)>>diff=xk-xk1具体执行情况:>> function xn()format longq=0.9+0.3*i;wn=exp(-2*pi*i/32);xk=(1-q^32)./(1-q*wn.^[0:31])xk =Columns 1 through 20.5698 + 3.3840i 2.8369 + 8.8597iColumns 3 through 49.3189 - 9.8673i 1.2052 - 3.5439iColumns 5 through 61.8846 -2.0941i 0.8299 - 1.2413i11,011)()()(k k 10nk 10-=--===∑∑-=-=N k QW Q QW W n x k X N NnN N n N N n ,0.9214 - 1.0753i 0.3150 - 0.0644i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8513 - 0.6357i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8978i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3158i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6914i 0.3173 + 0.9841i Columns 21 through 220.8929 + 0.7792i 0.4066 + 0.8452i Columns 23 through 240.5847 + 0.9017i 0.9129 + 0.9283i Columns 25 through 260.0573 + 0.5531i 0.4219 + 0.9562i Columns 27 through 280.3298 + 0.3143i 0.4513 + 0.2638i0.7214 + 0.1879i 0.0933 + 1.7793iColumns 31 through 320.9483 + 1.9802i 0.4932 + 2.6347i>> xn=q.^[0:31]xn =Columns 1 through 21.0000 0.0000 + 0.0000i Columns 3 through 40.0000 + 0.0000i 0.0000 + 0.0000iColumns 5 through 60.0000 + 0.0000i -0.0000 + 0.0000iColumns 7 through 8-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 9 through 10-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 11 through 12-0.0000 - 0.0000i -0.0000 - 0.0000iColumns 13 through 14-0.2000 - 0.4000i -0.3600 - 0.5200iColumns 15 through 16-0.9680 - 0.1760i 0.4816 - 0.3488i0.2381 - 0.2695i 0.2951 - 0.1711i Columns 19 through 200.1169 - 0.4655i 0.4449 - 0.9838i Columns 21 through 220.6955 + 0.2480i 0.5516 + 0.4319i Columns 23 through 240.3669 + 0.5542i 0.9639 + 0.2088i Columns 25 through 260.3049 + 0.9771i -0.5187 + 0.4709i Columns 27 through 28-0.6081 + 0.2682i -0.1278 + 0.5589i Columns 29 through 30-0.4827 + 0.0647i -0.6538 + 0.5134i Columns 31 through 32-0.8425 - 0.4341i -0.1280 - 0.1434i >> xk1=fft(xn,32)xk1 =Columns 1 through 20.5698 + 3.3839i 2.8366 + 8.8599i Columns 3 through 49.3182 - 9.8692i 1.2051 - 3.5439i1.8845 -2.0942i 0.8298 - 1.2413i Columns 7 through 80.9213 - 1.0754i 0.3150 - 0.0645i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8514 - 0.6356i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8977i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3159i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6913i 0.3172 + 0.9840i Columns 21 through 220.8929 + 0.7792i 0.4065 + 0.8452i Columns 23 through 240.5846 + 0.9016i 0.9129 + 0.9283i Columns 25 through 260.0572 + 0.5531i 0.4219 + 0.9563i0.3297 + 0.3144i 0.4512 + 0.2638iColumns 29 through 300.7213 + 0.1879i 0.0932 + 1.7793iColumns 31 through 320.9480 + 1.9802i 0.4928 + 2.6347i>> diff=xk-xk1diff =1.0e-013 *Columns 1 through 20.4625 + 0.8501i 0.9504 - 0.4003iColumns 3 through 40.6010 + 0.4028i 0.4752 + 0.7001iColumns 5 through 60.5502 + 0.8501i 0.4625 + 0.8501iColumns 7 through 80.7751 + 0.9250i 0 + 0.3875i Columns 9 through 100.7751 - 0.4625i 0.3126 - 0.4625iColumns 11 through 12-0.4625 - 0.3126i 0.4625 + 0.3875iColumns 13 through 14-0.9250 + 0.6938i 0.3875 - 0.0781iColumns 15 through 160.3875 - 0.6156i 0 + 0.9641iColumns 17 through 180.9250 - 0.7598i -0.4625 - 0.0422iColumns 19 through 200.4625 + 0.1172i 0.4625 + 0.3094iColumns 21 through 220.9250 + 0.4625i 0.9250 + 0.2313iColumns 23 through 240.3875 + 0.1563i 0.3875 - 0.2313iColumns 25 through 260.8501 -0.9250 - 0.4625iColumns 27 through 280.0127 - 0.7751i 0.7001 - 0.9250iColumns 29 through 300.1626 0.7814 - 0.9250iColumns 31 through 320.4816 + 0.9250i 0.7255 - 0.8501i由以上结果可知,由基2时间抽选的FFT算法所得到的DFT结果与利用公式法所得的理论值稍有偏差,但误差较小,从结果可以看出大概在小数点第15位才开始出现误差,故而用计算机FFT处理数据在精度上是可以接受的。
数字信号处理实验报告MATLAB

数字信号处理实验报告姓名:班级:09电信一班学号:2)]得下图二,图二图一3.将如下文件另存为:sigadd.m文件function [y,n] = sigadd(x1,n1,x2,n2)% 实现y(n) = x1(n)+x2(n)% -----------------------------% [y,n] = sigadd(x1,n1,x2,n2)% y = 在包含n1 和n2 的n点上求序列和,% x1 = 在n1上的第一序列% x2 = 在n2上的第二序列(n2可与n1不等)n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的长度y1 = zeros(1,length(n)); y2 = y1; % 初始化y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % 具有y的长度的x1y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % 具有y的长度的x2y = y1+y2;在命令窗口输入:x1=[1,0.5,0.3,0.4];n1=-1:2;x2=[0.2,0.3,0.4,0.5,0.8,1];n2=-2:3; [y,n] = sigadd(x1,n1,x2,n2)得:y =n=-1:10;x=sin(0.4*pi*n);y=fliplr(x);n1=-fliplr(n);subplot(2,1,1),stem(n,x) subplot(2,1,2),stem(n1,y在命令窗口键入:n=-1:10; x=sin(0.4*pi*n);n (samples)实验结果:1.(1)在命令窗口输入:tic; [am,pha]=dft1(x)N=length(x);w=exp(-j*2*pi/N);for k=1:Nsum=0;for n=1:Nsum=sum+x(n)*w^((k-1)*(n-1));endam(k)=abs(sum);pha(k)=angle(sum);end;toc得到如下结果:am =Columns 1 through 11120.0000 41.0066 20.9050 14.3996 11.3137 9.6215 8.6591 8.1567 8.0000 8.1567 8.6591Columns 12 through 169.6215 11.3137 14.3996 20.9050 41.0066pha =Columns 1 through 110 1.7671 1.9635 2.1598 2.3562 2.5525 2.7489 2.9452 3.1416 -2.9452 -2.7489Columns 12 through 16-2.5525 -2.3562 -2.1598 -1.9635 -1.7671Elapsed time is 0.047000 seconds.(2)在命令窗口输入:tic;[am,pha]=dft2(x)N=length(x);n=[0:N-1];k=[0:N-1];w=exp(-j*2*pi/N);nk=n’*k;wnk=w.^(nk); Xk=x*wnk; am= abs(Xk); pha=angle(Xk); toc得到下图:figure(1)00.10.20.30.40.50.60.70.80.91signal x(n), 0 <= n <= 99(2)在命令窗口键入:n3=[0:1:99];y3=[x(1:1:10) zeros(1,90)]; %添90个零。
数字信号处理实验报告MATLAB

实验2 离散时间信号的频谱分析1、实验内容一、编写子函数计算长度为N 的序列x(n) ( 0≤n ≤ N-1)的离散时间傅里叶变换,将频率均匀离散化, 一个周期内有M 个点。
要求画出虚部、实部、幅度、相位,并标注坐标轴。
二、对矩形序列x(n)=RN(n)1. 用公式表示x(n)的频谱,求出其幅度谱和相位谱;2. 利用编写的子函数,计算并画出x(n)的频谱1)固定M ,改变N ,观察N 的取值对频谱的最大值、过零点、第一旁瓣幅度与最大值的比值以及相位谱的影响;2)固定N ,改变M ,观察M 的取值对幅度谱和相位谱的影响。
如: M=4,26,100N=4,26,100三、利用子函数,画出信号x(n)=sin(pi*n/5)和 x(n)=cos(pi*n/4)+cos(pi*n/8) ( 0≤n ≤ N -1)的幅度谱和相位谱。
N 分别取为8,16,20,64,75,128,M=256。
观察N 取不同值时信号频谱的相同和不同之处,为什么会有这样的结果。
2、编程原理、思路和公式(1)、给定长度为N 的序列x(n)的离散时间傅里叶变换(DTFT )的公式为 10()()N jwjwn n X e x n e --==∙∑ 1()()2j w j w n x n X e e d w πππ-=⎰。
可以看出x(n)的DTFT 仍然是一个连续函数,所以需要将数字角频域w 离散化,设一个频率周期内离散点有M 个,则第k 个点所代表的数字角频率2w k M π=。
这样x(n)的DTFT 变成:2210()()()N j k j nk jw M M n X e X e x n eππ--===∙∑ 01k M ≤≤-,(2)、因为0≤.n ≤.N-1, 01k M ≤≤- 设置两层for 循环,用sum 表示累加求和的值,即可实现2210()()()N j k j nk jw MM n X e X e x n eππ--===∙∑(3)对矩形序列x(n)=R4(n),首先固定M 不变,改变N 的取值。
Matlab数字信号处理实验报告

实验 2-3
n=0:30;%输入x(n)和冲激响应 h(n) x=zeros(1,length(n)); h=zeros(1,length(n)); x([find((n>=0)&(n<=4))] ) =1; h([find((n>=0)&(n<=8))] ) =0.5; subplot(3,1,1); stem(x); title('x(n)'); axis([0,30,0,2]); subplot(3,1,2); stem(h); title('h(n)'); axis([0,30,0,2]); X=fft(x); H=fft(h); Y=X.*H; y=ifft(Y); subplot(3,1,3);
变换及 h(n) 的 Z 变换,则
H (z) zesT
1 T
Ha (s
m
j
2 T
m)
(2) 双线性变换法
s
平面与
z
平面之间满足以下映射关系:
s
2 T
1 1
z 1 z 1
s 平面的虚轴单值地映射于 z 平面的单位圆上,s 平面的左半平面完全映射 到 z 平面的单位圆内。双线性变换不存在混叠问题。双线性变换时一种非线性变
subplot(3,1,2); stem(n,h); axis([0,30,0,2]); title('冲激响应序列'); xlabel('n'); ylabel('h(n)');
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、 实验目的及要求 1. 用窗函数设计 FIR 滤波器
(1) 熟悉 FIR 滤波器设计的基本方法 (2) 掌握用窗函数设计 FIR 滤波器原理及方法 (3) 熟悉线性 FIR 滤波器的幅频特性和相频特性 (4) 了解不同窗函数对滤波器性能的影响 2. 用双线性变换法设计数字 Chebyshev1 型低通滤波器
(1) 在理论学习的基础上,加深对快速傅立叶变换的理解,熟悉 FFT 算法机器程序的编 写 (2) 熟悉用 FFT 对典型信号进行频谱分析的方法 (3) 了解应用 FFT 进行信号频谱分析过程中可能出现的问题, 以便在实际中正确应用 FFT (4) 熟悉模拟信号采样的方法和步骤,加深对奈奎斯特采样定理的理解 (5) 了解用已设计的 FIR/IIR 滤波器滤波的方法,观察滤波后的波形有什么变化 二、 实验内容及设计思路 1. 用窗函数设计 FIR 滤波器
x (t ) = 2 sin(2π f1t ) + 5sin(2π f 2t ) + 8 cos(2π f 3t ) + 7.5 cos(2π f 4t )
其中 f1 = 0.12kHz , f 2 = 4.98kHz , f3 = 3.25kHz , f 4 = 1.15kHz ,取采样频率 f s = 10kHz 。 要求: (1) 以 f s = 10kHz 对 x(t ) 进行取样,得到 x(n) 。用一个图形窗口,包括两个子图,分别显 示 x(t ) 以及 x(n) ( 0 ≤ n ≤ 511 )的波形; 思路:令变量m=n*T( 0 ≤ n ≤ 511 ),用m值代替t带入上面的函数对x(t)进行采样得到x(n),将
综合实验报告
( 2009-- 2010 年度第 2 学期)
名 题 院 班 学
称: 数字信号处理综合实验 目:信号处理算法综合实验 系: 级: 号: 电子与电气工程学院 电子 0801 200803020111 李元元 孙正 尚秋峰 宋文妙 1
学生姓名: 指导教师: 设计周数: 成 绩:
日期:
2010 年 12 月 17 日
(1) 了解工程上最常用的变换方法:冲激响应不变法和双线性变换法 (2) 掌握双线性变换法设计 IIR 滤波器的原理及具体设计方法,熟悉用双线性变换法设 计低通滤波器的计算机程序 (3) 熟悉用双线性变换法设计滤波器的幅频特性和相频特性 3. 模拟信号采样, FFT 对信号进行频谱分析,实现用 FIR /IIR 滤波
用双线性变换法,设计满足上述指标的数字Chebyshev I型低通滤波器。用一个图形窗口, 包括三个子图,分析显示滤波器的幅频响应、以dB为纵坐标的幅频响应和相频响应。 思路:先将数字滤波器的指标转换成模拟原型低通指标,计算出模拟切比雪夫 1 型滤波器, 再用双线性变换法将其转换为切比雪夫 1 型数字滤波器。 MATLAB 程序如下: %双线性变换法设计切比雪夫 1 型数字滤波器 %数字滤波器指标 wp=0.26*pi; Rp=0.75; ws=0.41*pi; As=50; %转换成模拟原型低通指标 T=1;Fs=1/T; omegap=(2/T)*tan(wp/2); omegas=(2/T)*tan(ws/2); %模拟切比雪夫 1 型滤波器的计算 [cs,ds]=afd_cheb1(omegap,omegas,Rp,As);
subplot(2,2,1);stem(n,hd,'.');title('单位冲激响应');grid; axis([0 N-1 -0.2 0.3]);ylabel('hd(n)');xlabel('n');text(N+1,-0.1,'n'); subplot(2,2,2);plot(w/pi,mag);title('幅频响应');grid; axis([0 0.8 0 1.1]);ylabel('幅度');xlabel('以\pi为单位的频率'); subplot(2,2,3);plot(w/pi,pha);title('相频响应');grid; axis([0 0.8 -4 4]);ylabel('相位');xlabel('以\pi为单位的频率'); subplot(2,2,4);plot(w/pi,db);title('以dB为纵坐标的幅频响应');grid; axis([0 1 -100 10]);ylabel('dB');xlabel('频率(单位:pi)'); 计算结果 N=47, As=52Db,满足要求,并且对通带波动的验证显示 Rp=0.0345, 它也是满足要求的。 可以看出用海明窗设计的 FIR 数字低通滤波器是满足要求 的 2. 双线性变换法设计数字 Chebyshev1 型低通滤波器
x(t)及x(n)的波形输出 MATLAB程序如下: f1=120;f2=4980;f3=3250;f4=1150; t=0:0.0001:10; y= 2*sin(2*pi*f1*t)+5*sin(2*pi*f2*t)+8*cos(2*pi*f3*t)+7.5*cos(2*pi*f4*t); fs=10000;T=1/fs;n=0:511; m=n*T; p=2*sin(2*pi*f1*m)+5*sin(2*pi*f2*m)+8*cos(2*pi*f3*m)+7.5*cos(2*pi*f4*m); figure(3); subplot(2,1,1);plot(t,y);title('x(t)');grid; axis([0 0.0511 -30 30]);xlabel('时间');ylabel('幅值'); subplot(2,1,2);stem(n,p);title('x(n)');grid; axis([0 511 -30 30]);xlabel('n');ylabel('幅值'); (2) 用FFT对 x(n) 进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最少 点数 N x ,并用一个图形窗口,包括两个子图,分别显示 x(n) 以及 X (k ) 的幅值; 思路: 频率分辨率F=5;采样频率fs=10000;采样周期T=1/fs,所以一个记录长度中的最少点 数Nx=fs/F=2000,因为要选用基2时间抽取算法,所以取N=2048 MATLAB程序如下: F=5;fs=10000;T=1/fs;Nx=fs/F;N=2048;%求出Nx=2000,选用基2时间抽取算法,所以取 N=2048 n=0:N-1;m=n*T; k=0:N-1; xn=2*sin(2*pi*f1*m)+5*sin(2*pi*f2*m)+8*cos(2*pi*f3*m)+7.5*cos(2*pi*f4*m); xk=fft(xn,N); magxk=abs(xk);%phaxk=angle(xk); fprintf('***Nx=%3.0f\n',Nx); figure(4); subplot(2,1,1);stem(n,xn);title('序列x(n)的幅值');grid; axis([0 2047 -30 30]);xlabel('n');ylabel('xn'); subplot(2,1,2);stem(k,magxk);title('序列x(k)的幅值');grid; axis([0 2047 0 8000]);xlabel('k');ylabel('xk'); (3) 用要求1中设计的线性相位低通数字滤波器对 x(n) 进行滤波,求出滤波器的输出 y1 (n) ,并用FFT对 y1 (n) 进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最
%双线性变换法 [b,a]=bilinear(cs,ds,Fs); [C,B,A]=dir2cas(b,a)%直接型转换为并联型 %计算数字滤波器的频率响应 [db,mag,pha,grd,w]=freqz_m(b,a); figure(2); subplot(2,2,1);plot(w/pi,mag);title('幅频响应');grid; axis([0 0.8 0 1.1]); ylabel('幅度');xlabel('以\pi 为单位的频率'); subplot(2,2,2);plot(w/pi,db);title('幅频响应(dB)');grid; axis([0 0.8 -60 1]); ylabel('对数幅度/dB');xlabel('以\pi 为单位的频率'); subplot(2,2,3);plot(w/pi,pha);title('相位响应');grid; axis([0 0.8 -4 4]); ylabel('相位');xlabel('以\pi 为单位的频率'); 计算结果:切比雪夫滤波器的阶数为 7 3. 拟信号采样, FFT 对信号进行频谱分析,实现用 FIR /Iy1 ,并用一个图形窗口,包括四个子图,分别显示 x(n) ( 0 ≤ n ≤ N x − 1 ) X (k ) 、 y1 (n) 、 ( 0 ≤ n ≤ N y1 − 1 )和 Y1 (k ) 的幅值; 思路: 函数fftfilt()可以实现FIR滤波,同上取记录长度中的最少点数Ny1=fs/F=2000, 选 用基2时间抽取算法,所以取N=2048 MATLAB程序如下: yn1=fftfilt(h,xn);N0=length(yn1); fs=10000;F=5;Ny1=fs/F;N=2048; n1=0:N0-1; k=0:N-1; yk1=fft(yn1,N); magyk1=abs(yk1);%phayk1=angle(yk1); fprintf('***Ny1=%3.0f\n',Ny1); figure(5); subplot(2,2,1);stem(n,xn);title('序列x(n)的幅值');grid; axis([0 2047 -30 30]);xlabel('n');ylabel('xn'); subplot(2,2,2);stem(k,magxk);title('序列x(k)的幅值');grid; axis([0 2047 0 7000]);xlabel('k');ylabel('xk'); subplot(2,2,3);stem(n1,yn1);title('序列y(n)1的幅值');grid; axis([0 2047 -10 10]);xlabel('n');ylabel('yn1'); subplot(2,2,4);stem(k,magyk1);title('序列y(k)1的幅值');grid; axis([0 2047 0 6000]);xlabel('k');ylabel('yk1'); (4) 用要求2中设计的Chebyshev低通数字滤波器对 x(n) 进行滤波,求出滤波器的输出 y2 (n) ,并用FFT对 y2 (n) 进行谱分析,要求频率分辨率不超过5Hz。求出一个记录长度中的最 少点数 N y 2 ,并用一个图形窗口,包括四个子图,分别显示 x(n) ( 0 ≤ n ≤ N x − 1 ) X (k ) 、 y2 (n) 、 ( 0 ≤ n ≤ N y 2 − 1 )和 Y2 (k ) 的幅值。 思路: 函数filtfilt()可以实现IIR滤波,同上取记录长度中的最少点数Ny1=fs/F=2000, 选用基2时间抽取算法,所以取N=2048 MATLAB程序如下: yn2=filtfilt(b,a,xn); N0=length(yn2); fs=10000;F=5;Ny2=fs/F;N=2048; n2=0:N0-1; k=0:N-1; yk2=fft(yn2,N);