摘要
Matlab是一个矩阵设计平台,传统数字滤波器设计需要大量的计算,但是利用Matlab可以快速实现滤波器的设计与仿真,而且频谱分析功能强大,在数字信号处理中发挥了巨大的作用。本次实验中,用双线性不变法设计高通巴特沃斯IIR数字滤波器,介绍了设计步骤,然后在Matlab环境下进行了仿真与调试,
实现了设计目标。
关键词:Matlab 数字滤波器双线性变换法 IIR
摘要
Matlab是一个矩阵设计平台,传统数字滤波器设计需要大量的计算,但是利用Matlab可以快速实现滤波器的设计与仿真,而且频谱分析功能强大,在数字信号处理中发挥了巨大的作用。本次实验中,用双线性不变法设计高通巴特沃斯IIR数字滤波器,介绍了设计步骤,然后在Matlab环境下进行了仿真与调试,
实现了设计目标。
关键词:Matlab 数字滤波器双线性变换法 IIR
()N
j G 2c 2
Ωj Ωj 11
Ω?
???
?
?+=
摘要
Matlab 是一个矩阵设计平台,传统数字滤波器设计需要大量的计算,但是利用Matlab 可以快速实现滤波器的设计与仿真,而且频谱分析功能强大,在数字信号处理中发挥了巨大的作用。本次实验中,用双线性不变法设计高通巴特沃斯IIR 数字滤波器,介绍了设计步骤,然后在Matlab 环境下进行了仿真。 关键词:Matlab 数字滤波器 双线性变换法
1设计要求和说明
利用MATLAB 仿真软件系统结合双线性变换法设计一个数字巴特沃斯高通IIR 滤波器。MATLAB 工具箱为滤波器的设计应用提供了丰富而简便的方法,使原来的非常繁琐复杂的程序设计变成简单的程序调用。
1.1 设计原理
滤波器,顾名思义,就是对系统输入信号进行滤波。那个数字滤波器的数学运算通常用两种方法来表示。一种是频域法,即利用FFT 快速运算办法对输入信号进行离散傅里叶变换,分析其频谱,然后根据所希望的频率特性进行滤波,再利用傅里叶反变换来输出出时域信号。 N 阶低通巴特沃斯滤波器的特性为:
其中,Ωc 为通带宽度,即截止频率。当阶次N 增大时,滤波器的特性曲线变的更加陡峭,其特性就越接近理想的矩形幅频特性()2
s G 。巴特沃斯滤波器
属于全极点设置,他的极点由以下公式来确定。
2
c 2c 22
j Ωs 11j Ωs -11)Ω(???
? ??+=
???
? ??+=
j
G 式
中
,
()
N
q j S 21c 1Ω-=。所以,
在s 平面上有2N 个极点。这些极点是等间隔的分布在半径为Ωc 的圆周上,并且这些极点都是成复共轭对出现的,极点位置与虚轴是对称的,且不在虚轴上。
双线性变换法是将s 平面压缩变换到某一中介1s 平面的一条横带里,再通过标准变换关系)*1ex p(T s z =将此带变换到整个z 平面上去,这样就使s 平面与z 平面之间建立一一对应的单值关系,消除了多值变换性。
为了将s 平面的Ωj 轴压缩到1s 平面的1Ωj 轴上的T pi -到T pi 一段上,可以通过以下的正切变换来实现:
)2
1
tan(21T T Ω=
Ω 这样当1Ω由T pi -经0变化到T pi 时,Ω由∞-经过0变化到∞+,也映射到了整个Ωj 轴。将这个关系延拓到整个s 平面和1s 平面,则可以得到
T
s T
s e e T T s T s ?-?-+-=?=11112)21tan(2
再将1s 平面通过标准变换关系映射到z 平面,即令)*1ex p(T s z =得到
1
1
112--+-=z z T s
同样对z 求解,得到
s T
s T z -+=22 双线性变换平面的映射关系如图一:
图一 双线性变换平面映射图
这样的变换叫做双线性变换。
1.2 设计思路
数字滤波器一般设计过程为:
① 按照实际需要,确定滤波器性能要求;
② 用一个因果、稳定的离散线性时不变系统去逼近这一个性能指标; ③ 用有限精度的计算去实现所设计的系统;
④ 通过模拟验证所设计的系统是否符合给定的性能要求。
IIR 滤波器设计的主要方法是先设计低通模拟滤波器,然后转换为高通、带通或带阻数字滤波器。对于其他如高通,带通,则通过频率变换转换为设计相应的高通,带通等。在设计的全过程的各个步骤,matlab 都提供相应的工具箱函数,使得IIR 数字滤波器设计变得非常简单。总的来说,我的设计思路主要有以下两种:
思路一:从归一化模拟低通原型出发,先在模拟域内经频率变换成为所需类型的模拟滤波器;然后进行双线性变换,由S 域变换到Z 域,而得到所需类型的数字滤波器。
模拟域 冲激响应不变法
频率变换 双线性变换法
图二 先频率变换再离散
思路二:先进行双线性变换,将模拟低通原型滤波器变换成数字低通滤波器;然后在Z 域内经数字频率变换为所需类型的数字滤波器。
数字域 双线性变换法 频率变换
归一化模拟低通原型
模拟高,带通或带阻
数字高,带通或带阻
归一化模拟低通原型 数字原型低通 数字高,带通
或带阻
图三 先离散再频率变换
以上两种思路都可以,我最后选择了第一种思路进行设计,即先在模拟域内经频率变换成为所需类型的模拟滤波器;然后进行双线性变换,由S 域变换到Z 域,而得到所需类型的数字滤波器。
1.3 设计过程
下面结合一个实例来说明巴特沃斯滤波器的设计过程。
例:设计一个巴特沃斯滤波器函数。该滤波器的性能指标为:通带的截止频率为Ωc=10000rad/s , 通带的最大衰减Ap=3 dB ,阻带的截止频率Ωs=40000rad/s ,阻带的最小衰减 As=35 dB 。 解:
(1)求相关参数
(2) 确定参数N
取N=3 , 根据
得到
(
)
()
2
.561
10λ11
10
ε5
.00.1A 5.00.1A s p
=-==-=9.2ΩΩlg ελlg p s =?
???
?
??
??
??≥
j j N ()N
a j s s H 2C 2Ωε11?
??
? ??+=
所以 ,()s H a 极点形式可以表示为
即满足系统性能指标的函数()s H a
2 Matlab 软件的程序设计
程序设计中用到主要函数:
[z,p,k]=buttap(N); %创建Buttord 低通滤波器原型 [Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通 [Bbz,Abz]=bilinear(Bbs,Abs,FS); %双线性变换
2.1 数字域指标变换成模拟域指标
其程序为:
fp = 400 ; Fs = 300;
Rp = 1; Rs = 20; wp =fp*2*pi; ws =fs*2*pi; FS=1000; T=1/FS; 程序执行结果
为:
()(
)
2
35.0ΩΩ235.0Ωc 3c
2c 1j s s j s --=-=+-=()()()()3211
s s s s s s s H a ---=
()3
22210210211
s s s s H a +?+?+=
--
2.2 数字域频率进行预畸变
令
Wp=wp/(FS);
Ws=ws/(FS);
其畸变程序为:
wp2=2*tan(Wp/2)/T;
ws2=2*tan(Ws/2)/T;
经过预畸变,可以发现频率变为
.3 模拟滤波器的设计
其程序为
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s') %设计模拟滤波器
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式figure(1)
freqs(Bap,Aap); %模拟低通滤波器的频率响应
title('模拟滤波器(低通原型)的频率响应')
[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通
figure(2)
freqs(Bbs,Abs);
title('模拟滤波器(高通原型)的频率响应')
程序执行后可以发现其频率响应为:
模拟滤波器的低通原型波形如图四所示:
图四模拟滤波器(低通原型)的频率响应模拟滤波器高通原型的波形如图五所示:
图五模拟滤波器(高通原型)的频率响应
2.4 模拟滤波器变成数字滤波器
其程序为:
[Bbz,Abz]=bilinear(Bbs,Abs,FS); %用双线性变换法设计数字滤波器
freqz(Bbz,Abz,512,FS);
程序运行的结果如图六:
图六数字滤波器的频率响应
由于使用的是双线性不变法设计的,其相位为非线性。此处主要是基于要获得严
格的频率响应,以及较准确地控制截止频率的位置,故画出了详细的幅频响应。得到数字滤波器的详细频率响应图形
图七详细的幅频响应(通带衰减为5dB)
当通带变为5dB(之前为1dB)时,阻带不变时,其波形如下图十。对比图七可知,其在通带处的衰减变为了5dB,曲线平滑了一些。
从调试的过程中发现:通带衰减越小,滤波器的性能越好。
阻带衰减越大,滤波器的性能越好。
3.程序调试中出现的问题
freqs(Bbs,Abs)与freqz(Bbz,Abz,512,FS)刚开始时分得不是很清楚,后来发现前者是求模拟域频率响应的,而后者是求数字域频率响应的。后者的用法如下:
[[h,w]=]freqz(b,a,n[,’whole’]);
或[h,f]=freqz(b,a,n[,’whole’],Fs);
式中,b,a为数字滤波器分子和分母多项式的系数,n为复数频率的响应点数,为整数,最好为2的幂,缺省时为512;Fs为采样频率,单位Hz。如果给定该值,则f位置输出为频率Hz,若没有给定,则按角频率(Angular frequency)给定f的频率矢量;’whole’表示返回的频率f或w值包含z平面整个单位圆频率矢量,即0~2π;缺省时,频率f或w值包含z平面上半单位圆(0~π)之间等间距n个点频率矢量。h为复频率响应;w为n点频率向量(单位rad);f为n点频率向量(Hz)。函数返回值缺省时,绘制幅频响应和相频响应图
4小结
总的来说,这次课程设计让我对 MATLAB 有了更深刻的了解,对数字滤波器的设计流程有了大致的了解,掌握了一些设计滤波器的基本方法,提高了理论用于实践的能力,掌握了更多专业相关的使用知识与技能。同时,也暴露了我很多的不足,在以后的学习中,将进一步发现并克服缺点。
参考文献
[1] 陈怀琛 MATLAB在电子信息课程中的应用(第二版)电子工业出版社 2006
[2] 郭仕剑 MATLAB7.X数字信号处理人民邮电出版社 2006
[3] 陈贵明用MATLAB语言处理数字信号与数字图像科学出版社 2000
[4] 王家文 MATLAB7.0图形图像处理国防工业出版社 2006
[
附录Ⅰ:
实验总程序:
fp = 400 ; fs = 300;
Rp = 1; %通带最大衰减Rp=1dB
Rs = 20; %阻带最小衰减Rs=20dB
wp =fp*2*pi;
ws =fs*2*pi;
FS=1000;T=1/FS
Wp=wp/(FS);
Ws=ws/(FS);
wp2=2*tan(Wp/2)/T; %预畸变求滤波器通带临界频率
ws2=2*tan(Ws/2)/T; %预畸变求滤波器阻带临界频率
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s')
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式figure(1)
freqs(Bap,Aap); %模拟低通滤波器的频率响应title('模拟滤波器(低通原型)的频率响应')
[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通
figure(2)
freqs(Bbs,Abs);
title('模拟滤波器的频率响应')
[Bbz,Abz]=bilinear(Bbs,Abs,FS); %双线性变换
figure(3)
freqz(Bbz,Abz,512,FS);
title('数字滤波器的频率响应')
[hw,w]=freqz(Bbz,Abz,512);
figure(4)
plot(w/pi,20*log10(abs(hw)));
grid
axis([0,1,-200,10])
title(' 数字滤波器详细的频率响应')
xlabel('w/pi');
ylabel('幅度(dB)');
wp=0.8*pi;
ws=0.6*pi;
OmegaP=2*1000*tan(wp/2);
OmegaS=2*1000*tan(ws/2);
lamdas=OmegaP/OmegaS;
N=0.5*log10((10.^(20/10)-1)/(10.^(1/10)-1))/log10(lamdas);
Wn= 4.8890e+003
az=[0 0 0 0 1];
bz=[1 2.613 3.414,2.613,1];
[Bbs,Abs]=lp2hp(az,bz,Wn)
[Bbz,Abz]=bilinear(Bbs,Abs,1000);
[hw,w]=freqz(Bbz,Abz,512);
figure(5)
plot(w/pi,20*log10(abs(hw)));
grid
axis([0,1,-200,10])
set(gca,'XTickMode','manual','XTick',[0,Ws/(pi),Wp/(pi),1]);grid set(gca,'YTickMode','manual','YTick',[-200,-Rs,-Rp,10]);grid
title(' 理论计算的滤波器的幅频响应')
xlabel('w/pi');
ylabel('幅度(dB)');
本科生课程设计成绩评定表
姓名张芬勤性别男
专业、班级通信0906
题目:MATLAB课程设计—利用MATLAB仿真软件系统结合双线性变换法设计
一个数字巴特沃斯高通IIR滤波器
答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
MATLAB课程设计报告 基于MATLAB GUI的“滤波器设计软件”设计
摘要 面对庞杂繁多的原始信号, 如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点, 在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件, MATLAB 提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI, 是由各种图形对象, 如图形窗口菜单按钮、文本框等构建的用户界面。 MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。 关键词:MATLAB GUI IIR滤波器FIR滤波器
目录 1设计任务 (1) 2 MATLAB GUI的简介 (2) 3 滤波器设计原理 (3) 3.1滤波器概述 (3) 3.2 IIR数字滤波器 (4) 3.2.1 IIR数字滤波器设计原理 (4) 3.2.2 IIR滤波器设计思想 (5) 3.2.3 IIR滤波器设计编程实现 (6) 3.3 FIR数字滤波器 (8) 3.3.1 FIR数字滤波器设计原理 (8) 3.3.2 FIR滤波器设计思想 (9) 4 基于Matlab GUI的数字滤波器设计思路及实现 (12) 4. 1 GUI界面设计概述 (12) 4.2 “滤波器设计软件”设计所实现任务 (14) 4.3 基于Matlab GUI的数字滤波器设计实现 (16) 4.3.1 “滤波器设计软件”GUI界面设计 (16) 4.3.2 “滤波器设计软件”回调函数编写 (17) 4.3.3AutoChoose.m程序的编写 (22) 4.4 运行和结果显示 (28) 5 设计总结和心得 (33) 5.1 设计总结 (33) 5.2 设计心得 (34) Abstract (35) 参考文献 (36) 附录
实验五图像的空间变换 一、实验目的 1、学习图像空间变换,并通过实验体会空间变换的效果,对其作出分析。 2、掌握利用最邻近插值和双线性插值算法(灰度插值)实现图像的缩放。 3、掌握MATLAB编程环境中基本的图像处理函数。 二、实验要求 1.读入图像,对其利用最邻近插值和双线性插值法进行缩放变换,要求先使用IPT函数进行变换,然后自己编写函数实现; 2.对比上述得到的结果。 三、实验原理 图像的空间变换,也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等。几何运算可改变图像中各物体之间的空间关系,这种运算可以看成是将各物体在图像内移动。 空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的像素值与目标图像上(x,y)处的像素值对应起来,并具有以下关系: x=X(u,v),y=Y(u,v) (即由(u,v)计算对应(x,y))(1.1) 或u=U(x,y),v=V(x,y) (即由(x,y)计算对应(u,v))(1.2) 其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换。由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映射法也叫像素填充法,向后映射法是向前映射法的逆。 最简单的插值算法是最邻近插值,也称为零阶插值。最邻近插值算法简单,在许多情况
下都能得到令人满意的结果,但是当图像中包含像素之间灰度级有变化的细微结构时,最邻近算法会在图像中产生人为加工的痕迹。双线性插值算法计算量比零阶插值大,但缩放后图像质量高,不会出现像素值不连续的的情况,这样就可以获得一个令人满意的结果。最邻近点插值取插值点的4个邻点中距离最近的邻点灰度值作为该点的灰度值。设插值点(i,j)到周边4个邻点fk(i,j)(k =1,2,3,4)的距离为dk(k =1,2,3,4),则:g(i,j)=fk(i,j),dl =min{d1,d2,d3,d4},l=1,2,3,4 。 双线性插值是利用了需要处理的原始图像像素点周围的四个像素点的相关性,通过双线插值算法计算得出的。对于一个目的坐标,通过后映射法得到其在原始图像的对应的浮点坐标(i+u,j+v),其中i,j均为非负整数,u,v为[0,l]区间的浮点数,则这个像素的值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+l,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v)=(1-u)×(1-v)×f(i,j)+(1-u)×v×f(i,j+1)+u×(1-v)×f(i+l,j)+u×v×f(i+l,j+1),其中f(i,j)表示源图像(i,j)处的的像素值,以此类推,这就是双线性内插值法。 如下图所示,已知(0,0)、(0,1)、(1,0)、(1,1)四点的的灰度,可以由相邻像素的灰度值f(0,0)和f(1,0)在X方向上线性插值求出(x,0)的灰度f(x,0),由另外两个相邻像素f(0,1)和f(1,1)在X方向上线性插值可求出(x,1)的灰度f(x,1),最后由f(x,0),f(x,1)在Y 方向上进行线性插值就可以得到(x,y)的灰度f(x,y)。 四、实验代码
第1章软件工程基础知识 1.1软件工程知识体系 ●软件需求(Software Requirements) ●软件设计(Software Design) ●软件构造(Software Construction) ●软件测试(Software Testing) ●软件维护(Software Maintenance) ●软件配置管理(Software Configuration Management) ●软件工程管理(Software Engineering Management) ●软件工程过程(Software Engineering Process) ●软件工程工具和方法(Software Engineering Tools and Methods) ●软件质量(Software Quality) 1.2软件生存周期与软件开发模型 ● 1.2.1 软件生存周期 ●Boehm定义的软件生存周期模型 ●GB 8566-1988定义的软件生存周期模型 ●GB/T 8566-1995定义的软件生存周期过程模型 ●GB/T 8566-2001定义的软件生存周期过程模型 ●UP定义的软件生存周期模型 ● 1.2.2 软件开发模型 ●瀑布模型(waterfall model) ●快速原型模型(rapid prototype model) ●演化模型(evolutionary model) ●增量模型(incremental model) ●螺旋模型(spiral model) ●喷泉模型(water fountain model) 1.3软件质量模型与软件质量管理 ● 1.3.1 软件质量模型 ●软件产品的内部质量、外部质量和使用质量 ●质量特性、质量子特性和度量 ●功能性:适宜性、准确性、互用性、依从性、安全性 ●可靠性:成熟性、容错性、可恢复性 ●可用性:可理解性、易学性、可操作性 ●效率:时间特性、资源特性 ●可维护性:可分析性、可修改性、稳定性、可测试性 ●可移植性:适应性、易安装性、一致性、可替换性 ● 1.3.2 软件质量管理 ●质量需求分析 ●质量计划 ●质量保证 ●质量控制 ●质量改进 ●软件质量管理体系
自己写的Matlab旋转+双线性插值图像函数效果图: 源码: clear all; I = imread('original.jpg');
[Height,Width,RGB] = size(I); II = I;%当角度为0时直接输出 %本程序是以左上角为坐标原点 %angle_j是旋转角度,正值是按顺时针旋转,负值时按逆时针旋转 angle_j = 181; %angle是弧度 angle = 2*pi*angle_j/360; %将angle转成正值 while(angle < 0) angle = 2 * pi + angle; end %约束在0-2π内 while(angle > 2 * pi) angle = angle - 2 * pi; end %tag是判断下面的while循环有没有执行过 tag = 0; while(angle > 0) %超过90度的旋转,都先旋转90度,直到角度在0°-90°之间 %原理是旋转90度整数倍时,信息是不丢失的 if angle >= pi/2 a = pi/2; angle = angle - pi/2; elseif0 < angle < pi/2 a = angle; angle = 0; end if tag == 0 tag = 1; else I = II; [Height,Width,RGB] = size(I);%在旋转后的图像上继续旋转,从而实现大于90° 的旋转 end %正向变换用 sina = sin(a); cosa = cos(a); %逆向变换用_m == _minus sina_m = sin(-a); cosa_m = cos(-a); %旋转后图像的长度和宽度 II_height = round(sina * Width + cosa * Height); II_width = round(sina * Height + cosa * Width); II = ones(II_height,II_width,3); %先转成unit8。或者下面赋值0-1规划一下。否则imshow全是白色。 II = im2uint8(II); %%%%%%%%%%%%%%%%%%%%正向映射%%%%%%%%%%%%%%%%%%%%%%%%
自控系统仿真软件课程设计报告 MATLAB 设计题目:牛顿摆球 姓名: 学号: 院系: 班级:1203 指导教师: 2014年12月20日
一.课程设计目的 1、熟悉课程设计的基本流程; 2、掌握MATLAB语法结构及调试方法; 3、熟悉MATLAB函数调用,熟练二维画图; 4、掌握MATLAB语言在控制方面的运用; 5、学会用MATLAB进行基本仿真; 6、掌握MATLAB编程技巧,提高编程水平。 二.系统分析 1.题目的描述: (1)牛顿摆球原理描述 五个质量相同的球体由吊绳固定,彼此紧密排列。当摆动最右侧的球并在回摆时碰撞紧密排列的另外四个球,最左边的球将被弹出,并仅有最左边的球被弹出。当然此过程也是可逆的,当摆动最左侧的球撞击其它球时,最右侧的球会被弹出。当最右侧的两个球同时摆动并撞击其他球时,最左侧的两个球会被弹出。同理相反方向同样可行,并适用于更多的球。 为了更接近现实,在这里我将考虑重力及空气阻力的影响,摆球将不会永无止境的运动下去,由于外界因素的影响,摆球运动一段时间后将回归静止状态。(2)通过MATLAB动画程序制作软件,实现下述过程 当运行程序时,把最右边的小球拉到一定的高度放下,让其碰撞其余四个小球,仅让最左边的小球被弹出,当最左边小球回摆碰撞其它球时,最右边小球又被弹出,如此循环。由于是非理想条件下,摆球的摆动幅度会随摆动次数的增加越来越小,直到静止。 时间停顿两秒,把右边两小球一起拉到一定高度放下,让其碰撞其余三个球,同样仅让左边两球被弹出,当球回摆再次碰撞时,最右边两球又被同时弹出,如此循环,因为外界因素的影响,最终五个球都会静止下来。 (3)整个实验看似简单,但要在MATLAB上完成这样一个动画过程,还是需要下点功夫,克服困难的。经过自己的努力,终于实现了整个过程,这也是一种不小的收获。 2.设计要求: (1)能够实现有阻尼摆动,即摆幅随摆动次数增加越来越小,直到静止。(2)能够让摆球弧线摆动。 三.系统设计 1.系统设计过程 (1)通过函数axis建立坐标系 (2)在坐标系范围内通过函数line画各个支架 (3)通过函数title添加标题“动量守恒实验”、函数text添加标注“牛顿摆球” (4)通过函数line画出五个球,并设定其初始位置,颜色,大小,线条的擦拭方式
课 程 设 计学院:数学学院 学号:20106496 姓名:黄星奕 辅导老师:陈晓红殷明
实验一 1.1 水手、猴子和椰子问题 一、问题描述 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? 二、思考与实验 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题。 三、问题分析 用递推算法。首先分析椰子数目的变化规律,设最初的椰子数为p 0,即第一个水手所处理之前的椰子数,用p 1、p 2、p 3、p4、p 5分别表示五个水手对椰子动了手脚以后剩余的椰子数目,则根据问题有 再用x表示最后每个水手平分得到的椰子数,于是有 所以 p5 = 5x +1 利用逆向递推的方法,有 但由于椰子数为一正整数,用任意的x作为初值递推出的p0数据不一定是合适的。在实验中可以用for 循环语句结合break语句来寻找合适的x和p0,对任意的x递推计算出p0,当计算结果为正整数时,结果正确,否则选取另外的x再次重新递推计算,直到计算出的结果p0为正整数为止。
四、源程序 n=input('input n:'); for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p) break; end end disp([x,p]); 五、实验结果 六、结果分析 从理论上分析,由于 所以
双线性插值法 I_=imread('test.jpg'); I=rgb2gray(I_); A=0.7;B=0.7;%失真像素坐标 [i,j]=size(I); m=round(i*A);n=round(j*B); temp=zeros(m,n);%产生m*n矩阵 G=[A0;0B]; for x=1:m for y=1:n ab=[x,y]/G;%取得x/A,y/B a=ab(1)-floor(ab(1));%权值 b=ab(2)-floor(ab(2)); %防溢出处理 if ab(1)<1 ab(1)=1; end if ab(1)>i ab(1)=i; end if ab(2)<1 ab(2)=1; end if ab(2)>j ab(2)=j; end %定义内插值坐标 ab11=[floor(ab(1))floor(ab(2))]; ab12=[floor(ab(1))ceil(ab(2))]; ab21=[ceil(ab(1))floor(ab(2))]; ab22=[ceil(ab(1))ceil(ab(2))]; temp(x,y)=(1-a)*(1-b)*I(ab11(1),ab11(2))+... a*(1-b)*I(ab12(1),ab12(2))+... (1-a)*b*I(ab21(1),ab21(2))+... a*b*I(ab22(1),ab22(2)); end end imshow(uint8(temp)),title('0.7倍双线性');最近邻法 I_=imread('test.jpg');%读入原始图像 I1=rgb2gray(I_); [i,j]=size(I1); m=round(i*1.5);n=round(j*1.5); m_=round(i*0.7);n_=round(j*0.7); %1.5倍最邻近 TEMP=zeros(m,n);%产生m*n矩阵 for i=1:m for j=1:n TEMP(i,j)=I1(round(i/1.5),round(j/1.5)); end end subplot(1,3,1),imshow(I1),title('原图') TEMP1_5=uint8(TEMP); subplot(1,3,2), imshow(TEMP1_5),title('1.5倍最邻近') 全局预测下的图像分割 I_=imread('test.jpg'); I=rgb2gray(I_); [m,n]=size(I); %统计直方图 zhifangtu=zeros(1,255);% for i=1:1:m for j=1:1:n zhifangtu(I(i,j)+1)= zhifangtu(I(i,j)+1)+1; end end plot(zhifangtu); %阈值处理 final=zeros(m,n); for x=1:1:m for y=1:1:n AA=I(x,y); if AA>120 final(x,y)=255; else final(x,y)=0; end end end imshow(uint8(final));
[模拟] 软件设计师UML分析与设计(一) 填空题 阅读下列说明和图,回答问题1至问题3,将解答填入对应栏内。 [说明] 某公司的主要业务是出租图书和唱碟。由于业务需求,该公司委托软件开发公司A开发一套信息管理系统,该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。A公司决定采用面向对象的分析和设计方法开发此系统。如图19-1所示为某类图书或唱碟被借阅时应记录的信息,图19-2描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。 第1题: 经过进一步分析,设计人员决定定义一个类Items_on_loan,以表示类Book和CD的共有属性和方法。请采用图19-2中属性和方法的名称给出类 Items_on_loan应该具有的属性和方法。(注意:不同名称的属性和方法表示不同的含义,如类CD中的composer与类Book中的author无任何关 系。)_________ 参考答案: 属性:title 方法:Reference title 详细解答: 第2题: 为了记录每种图书或唱碟的历史记录,引入类CirculationHistory,类中存储的信息是图19-1中所表示的内容。请采用UML表示法将下列4个类间的关系表示出来。 参考答案:
详细解答: 第3题: 现需了解十大最畅销(借出次数最多)图书或唱碟,为此引入TenPopulate类以存储所有十大畅销图书或CD的名称及其被借出的次数。顺序图19-3描述了某类图书或唱碟被借出后成为十大畅销图书或唱碟时对象间的消息交互。系统在一次运行过程中,应有(1) 个TenPopulate实例对象最合适,一个TenPopulate类实例对象最多需要和(2) 个Items_on_loan实例对象交互。 参考答案: 1;图书和唱碟种类数 详细解答: 阅读下列说明及UML类图,回答问题1至问题3,将解答填入对应栏内。 [说明] 某客户信息管理系统中保存着两类客户的信息。 (1)个人客户。对于这类客户,系统保存了其客户标识(由系统生成)和基本信息(包括姓名、住宅电话和E-mail)。 (2)集团客户。集团客户可以创建和管理自己的若干名联系人。对于这类客户,系统除了保存其客户标识(由系统生成)之外,也保存了其联系人的信息。联系人的信息包括姓名、住宅电话、E-mail、办公电话及职位。 该系统除了可以保存客户信息之外,还具有以下功能。 ·向系统中添加客户(addCustomer); ·根据给定的客户标识,在系统中查找该客户(getCustomer); ·根据给定的客户标识,从系统中删除该客户(removeCustomer); ·创建新的联系人(addContact); ·在系统中查找指定的联系人(getContact); ·从系统中删除指定的联系人(removeContact)。 该系统采用面向对象方法进行开发。在面向对象分析阶段,根据上述描述,得到如表19-1所示的类。 第4题: 请使用说明中的术语,给出图19-4中类Customer和类Person的属性。
Matlab课程设计 题目: 二、利用混合空间法增强锐化图像仿真 将原始图像增强,最终增强为如下类似图像 。 可参考如下过程
源程序: clc clear all %读取图像 J=imread('E:\工作台\MATLAB\2016课程设计\仿真2附件 \Fig0343(a)(skeleton_orig).tif'); %拉普拉斯变换得到M1 [m,n]=size(J); I=im2double(J); h1=[0,-1,0;-1,4,-1;0,-1,0]; M1=imfilter(I,h1); %与原图相加得到M2,锐化原图 M2=M1+I; %sobel算子运算结果得到M3,保留边缘去除噪声 h2=[1,0,-1;2,0,-2;1,0,-1]; h3=[-1,-2,-1;0,0,0;1,2,1]; Sx=imfilter(I,h2); Sy=imfilter(I,h3); for i=1:m for j=1:n M3(i,j)=sqrt((Sx(i,j))^2+(Sy(i,j))^2); end end %作3*3模板的均值平滑 M4=zeros(m,n); for x=2:m-1 for y=2:n-1 for a=-1:1 for b=-1:1 M4(x,y)=(M4(x,y)+M3(x+a,y+b))/9; end end end end for c=1:m for d=1:n M4(c,1)=M3(c,1); M4(1,d)=M3(1,d); end end %作幂次变换,提升亮度2倍,提升对比度 for e=1:m for f=1:n
M5(e,f)=M2(e,f)*M4(e,f); end end M6=I+M5; for g=1:m for h=1:n M7(g,h)=2*(M6(g,h))^1.15; end end subplot(241);imshow(I); subplot(242);imshow(M1); subplot(243);imshow(M2); subplot(244);imshow(M3); subplot(245);imshow(M4); subplot(246);imshow(M5); subplot(247);imshow(M6); subplot(248);imshow(M7); 分析: 1.读取图像 2.利用 Laplacian 变换得到M1,在与原图相处理得到锐化的图像 3.用 Sobel 算子运算,保留边缘去除噪声 4.用3*3的模板均值平滑化图像 5.用幂律定理,提高图像亮度,提高对比度
邮电大学通信学院 软件课程设计 实验报告 模块名称:___MATLAB软件设计 专业班级:__通信工程 姓名:____ ____ 学号:___ 实验日期:2013年 6 月 17—28日实验报告日期: 2013 年 7 月 1 日