1第一章MATLAB简介1.1MATLAB的主要特点:MATLAB软件是一种面向21世纪的计算机程序设计及科学计算的软件,由Mathworks公司最早开发于1984年,1997年发展到5.0版本,现在我们用的版本(6.5)与早期的版本相比,无论在计算的功能上还在涉及到的领域上,都有了很大的变化。它不但可以满足一般的科学运算、解各种线性、非线性方程,还可以解微分和偏微分方程,同时在信号处理、图象处理、自动控制等领域也有广泛的应用。在欧美,Matlab已成为学位本科生必须掌握的基本技能,在国内,这软件也逐步成为一些大学理工科专业学生的重要选修课程.1语言简单易学22代码短小高效、编程量小3计算功能非常强大4强大的图形绘制(一维、二维、三维)与处理功能5与其它的计算软件,如VB、VC等有良好的交互性,并且与Jave也有接口连接,利用MATLAB编译器可以生成独立的可执行程序。6集成有大量的工具箱,如信号处理、仪表控制、通信系统、小波等工具箱7在GUIDE中设计图形用户界面1.2MATLAB桌面简介1、启动,2、命令窗口,3、命令历史窗口,4、工作空间窗口、5、当前目录窗口6、M文件编辑器界面,7、在线帮助3第二章数据类型2.1常量与变量1、常数:内部常数pi、inf、NaN、eps等2、变量:变量必须以字母开头,有大小写区分。Matlab数据类型:Matlab变量都是以数组或矩阵形式保存的3、数组和矩阵(数值型)在Matlab中数组和矩阵的形式没有区别,只是在运算时有不同。数组逻辑型字符型数值型单元数组结构数组函数句柄4(1)一维数组(一维矩阵)的建立直接输入法x=[35790],这是一个有5个元素的一维数组(一维矩阵),也可以x=[3,5,7,9,0],运行后得到:x=3579冒号法x=8:17,x=3:0.5:13,x=9:-1:1用linspace函数构造数组:格式x=linspace(first,last,num),如:x=linspace(1,9,10),运行后得到x=1.00001.88892.77783.66674.55565.44446.33337.22228.11119.00005(2)二维数组(二维矩阵)的建立x=[325;269],行与行之间用分号隔开。x=325269x=[348;251;81013](3)用函数构建特殊矩阵常用函数ones,zeros,eye,diag,rand,randn,magicx=ones(4,3)x=111111111111x=ones(4)x=11111111111111116x=zeros(3,4)x=000000000000x=zeros(3)x=000000000x=eye(3)x=100010001a=[241]a=241x=diag(a)x=2000400017x=rand(2,3)x=0.30280.15090.37840.54170.69790.8600x=rand(3)x=0.85370.89980.81800.59360.82160.66020.49660.64490.3420x=magic(3)x=816357492行、列、对角线元素都是15。Thevalueofthecharacteristicsumforamagicsquareofordernissum(1:n^2)/nwhich,whenn=3,is15.(n=3)产生正态分布随机数randn(1,10000)hist()正态直方图8(4)、聚合矩阵将两个及以上的矩阵组合为一个新的矩阵。或者将一个矩阵扩展为一个新的矩阵a=[246;216]a=246216b=[45;62]b=4562c=[ab]c=2464521662两个“等高”矩阵的聚合:9两个“等宽”矩阵的聚合:a=[35;63;61]a=356361b=[41;32]b=4132c=[a;b]c=3563614132利用函数repmat(M,n,m)扩展矩阵M:M=[356;234]M=356234x=repmat(M,3,2)x=35635623423435635623423435635623423410(5)获取与矩阵有关的信息x=rand(4,5)x=0.95010.89130.82140.92180.93550.23110.76210.44470.73820.91690.60680.45650.61540.17630.41030.48600.01850.79190.40570.8936length(x)获取最长维的长度length(x)ans=5size(x)获取每一维的长度size(x)ans=4511(6)获取与矩阵的元素A=magic(4)A=16231351110897612414151A(4,2)ans=14双下标寻访:单下标寻访:A(6)ans=11A元素在内存中次序:16594211714310615138121双、单下标寻访12单、双下标的转换双转单:m=sub2ind(size(A),3,2)m=7单转双:[row,col]=ind2sub(size(A),8)row=4col=2A(:)ans=16594211714310615138121用A(:)获取A按列排列的整个元素:13获取某行或某列的元素A(3,:)ans=97612A(:,2)ans=211714获取部分元素A(2,1:3)ans=51110A(1:3,3)ans=3106A(1:4)ans=16594观察:A(1:end)A(1:4:16)A(1:3:end)14改变部分矩阵元素数值A=magic(4)A=16231351110897612414151A(2,3)=1000A=1623135111000897612414151A(3,:)=[1234]A=162313511100081234414151思考将A的第二列换成1234154、对数组的操作a=-4:4a=-4-3-2-101234A=reshape(a,3,3)A=-4-12-303-214函数reshape(a,n,m)将a变形为n行m列的矩阵??用magic(4)生成矩阵A,再用reshape将A变化为2×8的矩阵B(也可以A=reshape(-4:4,3,3)16数组转置、对称交换A=-4-12-303-214A'ans=-4-3-2-101234用’号实现矩阵的转置,行列互换。flipud(A)ans=-214-303-4-12fliplr(A)ans=2-1-430-341-2??1、生成一个2×5的随机矩阵后再转置。2、生成一个单行行矩阵,将它转置。17空矩阵及其对矩阵元的删除A=[]A=[]A=[245[]7]A=2457A=rand(4,5)A=0.95010.89130.82140.92180.93550.23110.76210.44470.73820.91690.60680.45650.61540.17630.41030.48600.01850.79190.40570.8936A(3:4,:)=[]A=0.95010.89130.82140.92180.93550.23110.76210.44470.73820.9169A(3)=[]A=24718A=reshape(-4:5,2,5)A=-4-2024-3-1135A(:,[2,4])=[]A=-404-315删除了A的第二第4列195、字符串用单引号创建字符串country='China',country=China创建了一个一维的字符串,又如:name=['LiYi';'HuXu']name=LiYiHuXu创建了一个二维的字符串用char(‘’)创建字符串name=char('LiuYing','HuXu')name=LiuYingHuXu类型转换主要函数有:str2num(),num2str(),20a='Thisisanexample.'a=Thisisanexample.size(a)ans=119a14=a(1:4)a14=Thisra=a(end:-1:1);ra=.elpmaxenasisihTascii_a=double(a)ascii_a=Columns1through128410410511532105115329711032101Columns13through191209710911210810146char(ascii_a)ans=Thisisanexample.216、单元数组单元数组是一种特殊的数组,该数组的基本元素是元胞(cell),每个元胞在数组中是平等的,元胞可以存放任何类型、大小的数组赋值法创建单元数组C_str=char('这是','元胞数组创建算例1');R=[1,3,5;3,2,4];Cn=[1+2i];S_sym=sym('sin(-3*t)*exp(-t)');A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S_sym};AA=[2x10char][2x3double][1.0000+2.0000i][1x1sym]22B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;BB=[2x10char][2x3double][1.0000+2.0000i][1x1sym]cell函数创建空单元数组C=cell(2,3)C=[][][][][][]C{1,2}=1:3C=[][1x3double][][][][]A{1,2}ans=135324A{1,2}(1,3)ans=5B{1,2}ans=135324B{1,2}(1,3)ans=523作业:1、用冒号法创建1行12列的矩阵,并产生一个1行12列的随机矩阵2、用linspace创建首元素为1末元素为10,共12个元素的一维矩阵3、用赋值法创建3行2列的二维矩阵A,并用repmat()将A扩展为6行4列的矩阵B4、用赋值法创建3行1列的矩阵5、用ones()创建1行8列的矩阵6、创建对角为2,4,6,8的二维对角矩阵7、用magic()创建3×3的矩阵M,并且用100替换M中的第二行第三列元素,调出第三列元素赋值给M1,调出第二列的前两个元素赋值给M2248、产生16个元素的一维数组a,用reshape()将a变形为4×4矩阵A和2×8的矩阵B9、生成一个4×5的随机矩阵A,利用空矩阵删除A的第2第3行10、产生单元数组C,使其结果为:C=[2x11char][][1x10double][]调用C{1,1}(2,3)2510、解:C=cell(2);C(:,1)={char('Another','textstring');10:-1:1}C=[2x11char][][1x10double][]26第三章运算基础与M文件设计3.1运算符及其运算1、算术运算符Matlab的算术运算有数组和矩阵两种。特别要理解点运算的意义和方法。a=[135;741];b=[113;5810];c=a+bc=248121211数组运算矩阵的对应元素进行运算。+,-运算与普通运算相同,其它运算需加”.”,.*,./,.^,参与运算的矩阵结构要相同。d=a.*bd=1315353210e=a./be=1.00003.00001.66671.40000.50000.100027f=a.^2f=192549161g=2.^ag=2832128162g1=b.^ag1=1124378125409610e1=b.\ae1=1.00003.00001.66671.40000.50000.1000