1、目录 摘要3Abstract31.MATLAB简介51.1 MATLAB说明51.2 MATLAB的语言特点51.3 MATLAB系统构成51.4 MATLAB数值计算61.4.1极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程61.4.2矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算81.4.3多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算122图像选择及变换152.1 原始图像选择读取15原始图片如下:152.2 图像的变换173 图像处理及代码程序183.1 图像放
2、大和缩小183.1.1 函数及其参数的说明183.1.2 源程序及运行结果183.2 图像任意角度的旋转213.2.1 函数及其参数的说明213.2.2 源程序及运行结果213.3图像的平移233.4 图像的镜像23源程序及运行结果234感悟体会小结25参考文献26全部源程序代码:27 摘要MATLAB是主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。 MATLAB强大的扩展功能为各个领域的应用提供了基础,由各个领域的专家相继给出了MATLAB工具箱,其中主要有信号处理,控制系统,神经网络,图像处助,鲁棒控制, 非线性系统控制设计,最优化,小波,通信等工具箱,这此工具箱给各个领域的
3、研究和工程应用提供了有力的工具。借助于这些“巨人肩膀上的工具”,各个层次的研究人员可直现方便地进行分析、计算及设计工作,从而大大地节省了时间。本次课程设计的目的在于较全面了解常用的数据分析与处理原理及方法,能够运用相关软件进行模拟分析。通过对采集的图像进行常规的图像的亮度和对比度的调整,并进行最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几种插值的效果,以及对图像进行直方图和直方图均衡并加入噪声进行对比,达到本次课程设计的目的。关键词:MATLAB 插值 放大 旋转 AbstractMATLAB is main face of scientif
4、ic calculation, visualization and interactive program design of the high-tech computing environment. MATLAB is a powerful extension application in various fields to provide a basis by experts in various fields have been given a MATLAB toolbox, which are signal processing, control systems, neural net
5、works, image processing support, robust control, nonlinear control system design, optimization, wavelets, communications toolkit, which this kit to the various areas of research and engineering applications a powerful tool. With these tools on the shoulders of giants, researchers at all levels can n
6、ow be easily analyzed directly, calculation and design work, which greatly saves time. The training aims to strengthen the basis of a more comprehensive understanding of commonly used data analysis and processing principles and methods related to the use of simulation software. Images collected by c
7、onventional image brightness and contrast adjustments, and the nearest neighbor interpolation and bilinear interpolation algorithm to the user selected image area to zoom in and out several times and rotate the whole operation, and save, compare the effect of several interpolation and the image hist
8、ogram and histogram and compared with noise, to the purpose of this course design.Keywords: MATLAB brightness and contrast rotation interpolation 1.MATLAB简介1.1 MATLAB说明 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值
9、计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。1.2 MATLAB的语言特点(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。运算符丰富。 (2)MATLAB既具有结构化的控制语
10、句(如for循环,while循环,break语句和 if语句),又有面向对象编程的特性。(3)程序限制不严格,程序设计自由度大。(4)MATLAB的图形功能强大。(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。1.3 MATLAB系统构成 主要由以下五部分构成: MATLAB系统构成 (1) MATLAB语言 (2)MATLAB工作环境 (3)图形处理 (4)MATLAB数学函数库 (5)MATLAB应用编程人员接口(API)1.4 MATLAB数值计算1.4.1极限的计算、微
11、分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程极限的计算举例:求极限 。源代码如下: syms x y f y=(x+2)./(x.2-x+3); f=limit(y,x,0)结果:f =2/3微分的计算举例:求函数f(x)=3-2x+1的导数。源代码如下: syms x f y y=3*x2-2*x+1; f=diff(y,x) 结果:f =6x-2积分的计算举例:求函数分别对两个变量的积分。源代码如下: syms x s f y f=cos(3*x)+x2-2*s; y=int(f,x) y=int(f,s) 结果:y =1/3*sin(3*x)+1/3*x3-2*s*x
12、y =cos(3*x)*s+x2*s-s2级数的计算举例:求级数之和源代码如下:syms n f yf=1/(n2+2);y=symsum(f,n,1,inf)结果:y =1/4*i*2(1/2)*Psi(1-i*2(1/2)-1/4*i*2(1/2)*Psi(1+i*2(1/2)求解代数方程举例:求多项式方程的根。源代码:p=1,-2,3,-4,5,-6,7roots(p)结果:ans = 1.3079 + 0.5933i 1.3079 - 0.5933i -0.7104 + 1.1068i -0.7104 - 1.1068i 0.4025 + 1.3417i 0.4025 - 1.3417
13、i求解常微分方程举例:求微分方程 , y(0)=2的解。源代码:dsolve(Dy=2+y2) dsolve(Dy=2+y2,y(0)=2)结果:ans =2(1/2)*tan(2(1/2)*t+2(1/2)*C1)-1/(t-C1) ans =2(1/2)*tan(2(1/2)*t+atan(2(1/2)1.4.2矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算矩阵的最大值、最小值举例:求矩阵A的最大值、最小值源代码如下:clear allA= 1 2 3 4 5 6 7 8 9max(A),min(A)结果:ans = 7 8 9ans =
14、1 2 3矩阵的均值举例:求矩阵A的均值源代码如下:clear allA= 1 2 3 4 5 6 7 8 9 mean2(A)结果:ans =5 矩阵的方差举例:求矩阵A的方差源代码如下:clear allA= 1 2 3 4 5 6 7 8 9std2(A)结果:ans = 2.7386矩阵的转置 举例:已知矩阵 ,求A的转置 源代码如下:clear allA= 1 2 3 4 5 6 7 8 9A结果:ans = 1 4 7 2 5 8 3 6 9矩阵的逆举例:已知,求A得逆。源代码如下:clear allA= 1 2 3 4 5 6 7 8 9inv(A)结果:ans = 1.0e+0
15、16 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 矩阵的行列式举例:已知,求A的行列式。源代码如下:clear allA=1,2,3;4,5,6;7,8,9det(A)结果:ans =0 矩阵的特征值举例:求矩阵A的特征值源代码如下:clear allA=1 2 3; 4 5 6;7 8 9eig(A)结果:ans = 16.1168 -1.1168 -0.0000 矩阵的相乘、右除、左除、幂运算举例:,求AB和AC。源代码如下:clear allA=1,2,3;4,5,6;7,8,9,B=1,2;
16、3,4;5,6,C=1,2,3,4;5,6,7,8;9,10,11,12A*B,A*C结果:ans = 22 28 49 64 76 100 ans = 38 44 50 56 83 98 113 128 128 152 176 200举例:已知,,求AB,B/A。源代码如下:clear allA=1,2,4;7,4,27;-3,9,12,B=1,-3,4;-6,9,1;27,8,-2AB,B/A结果:ans = -3.3733 -4.4311 3.7511 1.2533 -3.1956 2.8356 0.4667 1.9556 -1.3556 ans = -2.6667 0.5333 0.0
17、222 1.0667 -0.5733 1.0178 29.9333 -2.4267 -4.6844举例:设,求。源代码如下:clear allA=1,-1;1,1A10 ,A.10结果:ans = 0 -32 32 0 ans = 1 1 1 11.4.3多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算多项式加减乘除运算举例:f(x)= g(x)=源代码如下:clear allf=1 -2 3 -4 0 -6 7 -8 9g=0 0 0 5 4 -3 20 -1 2h=f+gh=f-gh=conv(f,g)结果:h = 1 -2 3 1 4 -9 2
18、7 -9 11 h = 1 -2 3 -9 -4 -3 -13 -7 7 h = Columns 1 through 9 0 0 0 5 -6 4 18 -66 46 Columns 10 through 17 -76 16 -136 206 -206 202 -25 18源代码如下:clear allf=1 -2 3 -4 0 -6 7 -8 9;g=5 4 -3 20 -1 2;q,r=deconv(f,g)结果:q = 0.2000 -0.5600 1.1680 -2.8704 r = Columns 1 through 5 0 0 -0.0000 0 26.3856 Columns 6
19、 through 9 -38.9312 66.6960 -13.2064 14.7408多项式求导举例:g(x)=源代码如下:clear allg=5 -4 3 -2 1 -10;polyder(g)结果:ans = 25 -16 9 -4 1求根和求值运算举例:g(x)=源代码如下:clear allg=5 -4 3 -2 1 -10;roots(g)结果:ans = 1.2628 0.4804 + 1.1213i 0.4804 - 1.1213i -0.7118 + 0.7468i -0.7118 - 0.7468i多项式的部分分式展开举例:将有理多项式展开成部分多项式源代码如下: B=1
20、,-3,5; A=1,5,-2,15;R,P,K=residue(B,A)结果:R =1.3731 -0.1866 - 0.0325i -0.1866 + 0.0325iP = -5.7924 0.3962 + 1.5597i 0.3962 - 1.5597iK = 多项式的拟合、插值举例:源代码(插值)如下:x=1 3 5 7 9;y=2 4 6 8 10;x1=1.2 3.4 6.5 ;y1=interp1(x,y,x1)结果:y1 = 2.2000 4.4000 7.5000 举例:源代码(拟合)如下:x=1 2 3 4 5;y=0 0.2 0.4 0.9 1.5;z=polyfit(x
21、,y,2)结果:z = 0.0786 -0.1014 0.0400 2图像选择及变换2.1 原始图像选择读取原始图片如下:图1 原始图片MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。采用的是imread函数来实现图像文件的读取操作,采用的格式如下: A=imread(filename.fmt)该语句用于读取字符串“filename”对应的灰度图像或彩色图像,“fmt”指定了文件的格式。采用imfinfo函数查询图像文件的信息。其语句格式如下: Info=imfinfo(filename.fmt)该语句可以在命令窗口会显示出文件的基本信息。采用imshow函数进行图像的显示
22、,采用的格式如下:A=imread(filename.fmt); imshow(A);当这种显示方式要求被显示的图像要么在当前目录下或MATLAB的目录下。采用rgb2gray函数进行真彩色图像与灰阶强度图像的转变,其格式调用如下: A=rgb2gry(filename.fmt);得到的图像可以进行统计与处理,能完成要求。图像读入与显示和变化的源代码如下:close all;clear all;x=imread(xuewu.jpg);imshow(x);imfinfo(xuewu.jpg)程序运行结果如下图2所示:图2 读取后显示图片 命令窗口中,显示如下:Filename: xuewu.jp
23、g FileModDate: 27-Dec-2011 08:58:56FileSize: 348015 Format: jpgFormatVersion: Width: 1024Height: 768BitDepth: 24 ColorType: truecolor FormatSignature: NumberOfSamples: 3 CodingMethod: Huffman CodingProcess: Sequential Comment: 2.2 转换图像为灰阶图像2.2 图像的变换在后期的处理中,有部分程序需要用到灰阶图片,因此提前将图片进行转换,得到灰阶图片。采用rgb2gray
24、函数进行真彩色图像与灰阶强度图像的转变其格式调用如下:A=rgb2gry(filename.fmt);得到的图像可以进行统计与处理。程序源代码如下: x1=rgb2gray(x); figure,imshow(x1)程序运行结果如下图3所示:图3 灰阶图片3 图像处理及代码程序3.1 图像放大和缩小3.1.1 函数及其参数的说明对图像进行放大和缩小可以采用imresize函数,其调用格式如下:B = imresize(A,mrows ncols, method )说明:mrows ncols 是选择放大或缩小的倍数,method表示选用的插值方法,其可选值为nearest(最邻近插值法)、bi
25、linear(双线性插值)和bicubic(双三次插值法),并且method的缺省表示为nearest。3.1.2 源程序及运行结果源程序如下所示:%放大2倍x5=imresize(x1,2); %最邻近插法figure,imshow(x5)x6=imresize(x1,2,bilinear); %双线性插值法figure,imshow(x6) %缩小到原来的1/5x7=imresize(x1,0.2); %最邻近插法figure,imshow(x7)x8=imresize(x1,0.2,bilinear); %双线性插值法figure,imshow(x8)程序运行结果如图6、7、8、9所示:
26、图6 最邻近插法放大一倍图7 双线性插值法放大图8 最邻近插法缩小图9 双线性插值法缩小3.2 图像任意角度的旋转3.2.1 函数及其参数的说明对图像进行旋转可以采用imrotate函数,其调用格式如下所示:B = imrotate(A,angle,method,bbox)说明:A为输入二维图像矩阵,其数据类型不限。angel为逆时针旋转的角度值,如果希望顺时针旋转,则选择该值为负。method表示选用的插值方法,其可选值为nearest(最邻近插值法)、bilinear(双线性插值)和bicubic(双三次插值法),并且method的缺省表示为nearest。bbox为指定输出图像尺寸的字符
27、串,crop表示的通过裁剪使输出图像尺寸与输入图像一致,loose表示的不进行裁剪,故输出图像尺寸会比输入图像尺寸大,它在默认情况下为loose。3.2.2 源程序及运行结果源程序如下:%将原始灰度以最邻近插值的方式将图像顺时针旋转45x9=imrotate(x1,45); figure,imshow(x9)%将原始灰度以双线性插值的方式将图像顺时针旋转45x10=imrotate(x1,45,bilinear); figure,imshow(x10)程序的运行结果下图10和图11所示图10 最邻近插值法45逆时针旋转图11 双线性插值法逆时针45旋转3.3图像的平移 源程序如下:% x11表
28、示平移后的图像se = translate(strel(1), 100 100);x11 = imdilate(x1, se);figure,imshow(x11);title(平移);运行结果如下图12所示图12 平移后的图像3.4 图像的镜像 源程序及运行结果height,width,dim=size(x1);tform=maketform(affine,-1 0 0;0 1 0;width 0 1);%定义水平镜像变换矩阵x12=imtransform(x1,tform,nearest);figure,imshow(x12);title(水平镜像);tform2=maketform(af
29、fine,1 0 0;0 -1 0;0 height 1);%定义垂直镜像变换矩阵x13=imtransform(x1,tform2,nearest);figure,imshow(x13);title(垂直镜像);程序结果如下图13、14所示:图13 水平镜像图14 垂直镜像4感悟体会小结通过此次的课程设计,感触颇深,因为让我认识到了MATLAB的强大功能,同时也对通信系统方面的知识尤其是的信号处理的认识有了进一步的加深。在编程的过程中,我也遇到了很多困难,所幸的是图书馆有相关书籍,网络上有学长学姐们做过的仿真作为参考,有老师和同学们帮助我,于是我一步步实现了各个子系统的相关编程,并且在最后得
30、以综合整理,完成了此次的仿真任务。但是不得不说,此时课程设计由于时间和我的知识储备的问题,仍然有一些不完备的地方:首先,在PCM解调中,出现了斜率过载问题,使得在恢复信号的时候出现了过载失真。其次,在FSK调制解调过程中运用MATLAB自带的函数进行实现,效果不是很理想。最后将恢复信号和原始信号在一幅图中进行了定性的比较,但是没有通过编程实现定量分析失真度。此次课设涉及了多方面的知识,对动手能力有很高的要求,另外对课本知识要有深度的了解,此次课程设计让我了解到更多的专业知识,有了进一步的提升,另外在程序细节方面加固了理解和记忆,对我学习有很大的帮助。这次课程设计也让我看到了自己很多的不足,需要
31、查阅大量的书籍和请教同学,没能真正独立的完成,说明自己掌握的专业知识远远不够,以后要多加学习,提升自己。参考文献1 高展宏,徐文波.基于MATLAB的数字图像处理案例教程.北京:清华大学出版社,2011 2 贺兴华等.MATLAB7.x图像处理.北京:人民邮电出版社,2006 3 陈杰.MATLAB宝典.北京:电子工业出版社,2007. 4 张德丰. MATLAB数值分析与应用. 北京:国防工业出版社,2009.5 美冈萨雷斯.温茨著.数字图像处理.2版.阮秋琦,等译. 北京:电子工业出版社,2002. 6 汪晓银,邹庭荣.数学软件与数学实验.武汉:华中农业大学教务处,2007 全部源程序代码
32、:close all;clear all;x=imread(D:123.JPG); % x表示彩色图片imshow(x);title(狗狗);imfinfo(D:123.JPG) %得到灰度图像x1=rgb2gray(x); %x1表示灰度图像figure,imshow(x1);title(灰度图像); %基于灰度图像的放大和缩小%放大2倍x5=imresize(x1,2); %x5表示经最邻近插法放大后的图像figure,imshow(x5);title(最邻近插法放大);x6=imresize(x1,2,bilinear); % x6表示经双线性插值法放大后的图像figure,imshow
33、(x6);title(双线性插值法放大); %缩小到原来的1/5x7=imresize(x1,0.2); %x7表示经最邻近插法缩小后的图像figure,imshow(x7);title(最邻近插法缩小);x8=imresize(x1,0.2,bilinear); %x8表示经双线性插值法缩小后的图像figure,imshow(x8);title(双线性插值法缩小); %基于灰度图像的旋转%x9表示以最邻近插值的方式将图像顺时针旋转45后的图像x9=imrotate(x1,45); figure,imshow(x9);title(最邻近插值旋转45); % x10表示以双线性插值的方式将图像顺
34、时针旋转45后的图像 x10=imrotate(x1,45,bilinear); figure,imshow(x10);title(双线性插值旋转45); % x11表示平移后的图像se = translate(strel(1), 100 100);x11 = imdilate(x1, se);figure,imshow(x11);title(平移); height,width,dim=size(x1);tform=maketform(affine,-1 0 0;0 1 0;width 0 1);%定义水平镜像变换矩阵x12=imtransform(x1,tform,nearest);figure,imshow(x12);title(水平镜像);tform2=maketform(affine,1 0 0;0 -1 0;0 height 1);%定义垂直镜像变换矩阵x13=imtransform(x1,tform2,nearest);figure,imshow(x13);title(垂直镜像); 27本科生课程设计成绩评定表姓 名性 别专业班级课程设计题目:通信工程应用技术综合训练与实习课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 2014年 1月 12 日.忽略此处.