1、MATLAB基础一、 帮助l 一旦发现指令不知如何使用时,help命令将告诉你使用。例:help sinSIN Sine. SIN(X) is the sine of the elements of X. See also asin, sind. Overloaded functions or methods (ones with the same name in other directories) help sym/sin.m Reference page in Help browser doc sin 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号()并按入Enter键即可
2、。例如:(10*19+2/4-34)/2*3ans= 234.7500 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算后的答案,并显示其数值屏幕上。如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变数值即可MATLAB利用了二个游标键可以将所下过的指令叫回来重覆使用。按下则前一次指令重新出现,之后再 按Enter键,即再执行前一次的指令。而键的功用则是往后执行指令。其它在键盘上的几个键如, Delete, Insert,其功能则显而易见,试用即知无须多加说明。l Ctrl-C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB
3、的工作。l 有三种方法可以结束MATLAB1.exit 2.quit 3.直接关闭MATLAB的命令视窗(Command window)变量及其命名规则l 变量1. 变量名的大小写是敏感。2. 变量的第一个字符必须为英文字母,而且不能超过31个字符。3. 变量名可以包含下连字符、数字,但不能为空格符、标点。预定义的变量ans预设的计算结果的变量名epsMATLAB定义的正的极小值=2.2204e-16pi内建的值inf值,无限大 ( )NaN无法定义一个数目 ( )i 或 j虚数单位i=j=-1nargin函数输入参数个数nargout函数输出参数个数realmax最大的正实数realmin最
4、小的正实数flops浮点运算次数而键入clear则是去除所有定义过的变量名称。MATLAB赋值语句l 表达式MATLAB书写表达式的规则与“手写算式”差不多相同。如果一个指令过长可以在结尾加上.(代表此行指 令与下一行连续),例如3*.6ans =18MATLAB常用数学函数l 三角函数和双曲函数名称含义名称含义名称含义sin正弦csc余割atanh反双曲正切cos余弦asec反正割acoth反双曲余切tan正切acsc反余割sech双曲正割cot余切sinh双曲正弦csch双曲余割asin反正弦cosh双曲余弦asech反双曲正割acos反余弦tanh双曲正切acsch反双曲余割atan反正
5、切coth双曲余切atan2四象限反正切acot反余切asinh反双曲正弦sec正割acosh反双曲余弦l 指数函数名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根l 复数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag复数虚部l 圆整函数和求余函数名称含义名称含义ceil向+圆整rem求余数fix向0圆整round向靠近整数圆整floor向-圆整sign符号函数mod模除求余l 矩阵变换函数名称含义名称含义fiplr矩阵左右翻转diag产生或提取对角阵fipud矩阵上
6、下翻转tril产生下三角fipdim矩阵特定维翻转triu产生上三角Rot90矩阵反时针90翻转l 其他函数名称含义名称含义min最小值max最大值mean平均值median中位数std标准差diff相邻元素的差sort排序length个数norm欧氏(Euclidean)长度sum总和prod总乘积dot内积cumsum累计元素总和cumprod累计元素总乘积cross外积MATLAB系统命令命 令含 义help在线帮助helpwin在线帮助窗口helpdesk在线帮助工作台demo运行演示程序ver版本信息readme显示Readme文件who显示当前变量whos显示当前变量的详细信息cl
7、ear清空工作间的变量和函数pack整理工作间的内存load把文件调入变量到工作间save把变量存入文件中quit/exit退出MATLABwhat显示指定的matlab文件lookfor在HELP里搜索关键字which定位函数或文件path获取或设置搜索路径echo命令回显cd改变当前的工作目录pwd显示当前的工作目录dir显示目录内容unix执行unix命令dos执行dos命令!执行操作系统命令computer显示计算机类型MATLAB语言中的关系与逻辑运算在执行关系及逻辑运算时,MATLAB 将输入的不为零的数值都视为真 (True)而为零的数值则视为否 (False)。 运算的输出值将
8、判断为真者以 1 表示而判断为否者以 0 表示。各个运算元须用在二个大小相同的阵列或是矩阵中的比较l 关系运算指令含义小于大于=大于等于=等于=不等于例:a=1:2:11;b=2:1:7;abans =0 0 1 1 1 1a=bans = 0 1 0 0 0 0a=bans = 0 1 1 1 1 1a-(b4)ans = 1 3 5 6 8 10l 逻辑运算指令含义&逻辑 and|逻辑 or逻辑 not(a6)ans =1 0 0 0 0 1c=a+(a3)|(b5)% x中大于5的元素ans = 6 7 8 6 9 7 10 8 11 x(4)=100%给x的第四个元素重新给值x = 1
9、 2 3 4 5 6 7 8 4 100 6 7 8 9 10 11 x(3)= % 删除第三个元素x = Columns 1 through 12 1 4 100 3 6 4 7 5 8 6 9 7 Columns 13 through 15 10 8 11 x(16)=1 % 加入第十六个元素x = Columns 1 through 12 1 4 100 3 6 4 7 5 8 6 9 7 Columns 13 through 16 10 8 11 12 建立阵列上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式: x=(0:0.02:1); % 以:起始值=0、
10、增量值=0.0.2、终止值=1的矩阵 x=linspace(0,1,100); % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100a=%空矩阵a = zeros(2,2)%全为0的矩阵ans = 0 00 0 ones(3,3) %全为1的矩阵ans = 1 1 1 1 1 11 1 1 rand(2,4);随机矩阵a=1:7, b=1:0.2:5;%更直接的方式c=b a; %可利用先前建立的阵列 a 及阵列 b ,组成新阵列 a=1:1:10; b=0.1:0.1:1; a+b*I%复数阵列ans = Columns 1 through 4 1.0000 + 0.1
11、000i 2.0000 + 0.2000i 3.0000 + 0.3000i 4.0000 + 0.4000i Columns 5 through 8 5.0000 + 0.5000i 6.0000 + 0.6000i 7.0000 + 0.7000i 8.0000 + 0.8000i Columns 9 through 10 9.0000 + 0.9000i 10.0000 + 1.0000i在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented)的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址矩阵的运算l 经典的算
12、术运算符。经 典 的 算 术 运 算 符运 算 符MATLAB表达式加+a+b减-a-b乘*a*b 除/ 或 a/b或ab 幂abl 前面我们已经把经典的算术运算符告诉大家了,在这里同样也可以使用。 a=1:1:10; b=0:10:90; a+bans =1 12 23 34 45 56 67 78 89 100 a-bans =1 -8 -17 -26 -35 -44 -53 -62 -71 -80 a.*b%注意这里a后加了个“.”ans = 0 20 60 120 200 300 420 560 720 900 a/bans =0. 1158 abans = 0 0 0 0 0 0 0
13、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 2 3 4 5 6 7 8 9 b./aans = Columns 1 through 7 0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714 Columns 8 through 10 8.7500 8.8889 9.000
14、0 a.bans = Columns 1 through 7 0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714 Columns 8 through 10 8.7500 8.8889 9.0000 a.2ans = 1 4 9 16 25 36 49 64 81 100说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。l 矩阵转置运算通过在矩阵变量后加的方法来表示转置运算a=1:1:10;b=0:10:90;aans = 1 2 3 4 5 6 7 8 910c=a+b*i;cans = 1.0000 2.
15、0000 -10.0000i 3.0000 -20.0000i 4.0000 -30.0000i 5.0000 -40.0000i 6.0000 -50.0000i 7.0000 -60.0000i 8.0000 -70.0000i 9.0000 -80.0000i 10.0000 -90.0000i矩阵函数l MATLAB常用数学函数这些数学函数一般都可以作为矩阵函数。a=1:1:10;b=0:10:90;sin(a)exp(b)l 求矩阵的长度的函数a=10,2,12;34,2,4;98,34,6;size(a)ans =3 3length(a)ans =3好好的看一下两者之间的区别。l
16、矩阵的几种基本变换操作1. 通过在矩阵变量后加的方法来表示转置运算a=10,2,12;34,2,4;98,34,6;aans = 10 34 98 2 2 3412 4 62. 矩阵求逆inv(a)ans = -0.0116 0.0372 -0.0015 0.0176 -0.1047 0.0345 0.0901 -0.0135 -0.00453. 矩阵求伪逆pinv(a)ans = -0.0116 0.0372 -0.0015 0.0176 -0.1047 0.0345 0.0901 -0.0135 -0.00454. 左右反转fliplr(a)ans = 12 2 10 4 2 34 6 3
17、4 985. 矩阵的特征值u,v=eig(a)u = -0.2960 0.3635 -0.3600 -0.2925 -0.4128 0.7886 -0.9093 -0.8352 0.4985v = 48.8395 0 0 0 -19.8451 0 0 0 -10.99436. 上下反转flipud(a)ans = 98 34 6 34 2 410 2 127. 旋转90度rot90(a)ans = 12 4 6 2 2 3410 34 98Matlab在二维图形设计上的应用Matlab不仅具有强大的数值运算功能,也同样具有非常强大的二维和三维图形绘制功能,尤其擅长于将各种科学运算结果的可视化。
18、计算的可视化可以将不直观的数据通过图形来表示,从而发现其中的内在关系。Matlab的图形命令格式简单,可以使用不同的线形,色彩、数据点标记和标注等来修饰。Matlab(Matrix Laboratory)是MathWorks公司开发的,目前国际上最流行、应用最广泛的科学与工程计算软件。它广泛应用于自动控制、数学计算、信号分析、计算机技术、图像信号处理、财务分析、航天工业、汽车工业、生物医学工程、语音处理和雷达工业等各行各业,也是外高校和研究部门进行许多科学研究的重要工具。由于它具有强大的计算和绘图功能、大量稳定可靠的算法库和简洁高效的编程语言,已成为数学工具方面事实上的标准。Matlab不仅具
19、有强大的数值运算功能,也同样具有非常强大的二维和三维图形绘制功能,尤其擅长于将各种科学运算结果的可视化,由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。计算的可视化可以将不直观的数据通过图形来表示,从而发现其中的内在关系。Matlab的图形命令格式简单,可以使用不同的线形,色彩、数据点标记和标注等来修饰。本章专门介绍Matlab在二维、三维图形设计的一些基本命令格式以及一些简单的运用。 1.1 二维图形一、 plot函数plot命令是Matlab中最简单最常用的绘图命令,主要用来绘制二维曲线。命令格式为plot(x,y):x表示要绘制的数据点的横坐标,可省略。如果
20、省略则以数据点的序号绘制横坐标。y表示数据点的数值,以向量形式表示。函数格式:plot(x,y) 其中x和y为坐标向量函数功能:以向量x、y为轴,绘制曲线。【例1】 plot(1,3,4,2,5)%长度为5的向量绘制向量x,y的曲线,大多数情况下,我们要控制曲线的横坐标,这时应该增加一个和y具有相同列数的向量x。【例1】 在区间0X2p内,绘制正弦曲线Y=SIN(X),其程序为:x=0:pi/100:2*pi;y=sin(x);plot(x,y) ;grid on%x,y的长度相等【例2】同时绘制正、余弦两条曲线Y1=SIN(X)和Y2=COS(X),其程序为:x=0:pi/100:2*pi;
21、y1=sin(x);y2=cos(x);plot(x,y1,x,y2)plot函数还可以为plot(x,y1,x,y2,x,y3,)形式,其功能是以公共向量x为X轴,分别以y1,y2,y3,为Y轴,在同一幅图内绘制出多条曲线。1) 绘制矩阵plot(y)中,y可以是具有多个行的向量,即一个矩阵。绘出的图形是与y的行数相同数目曲线。示例13x=0:.01:2*pi;y=sin(x);2*sin(x);3*sin(x)%y是一个三行的矩阵plot(x,y);grid on 2) 绘制混合曲线当x,y是向量或是矩阵时,分别有下列几情况:1. 如果x是向量,而y是矩阵,则x的长度与矩阵y的行数或必须相
22、等。如果x的长度与y的行数、相等,则向量x和矩阵y的每列向量对应画一条曲线;如果x的长度与y的列数相等,则向量x和矩阵y的每行向量对应画一条曲线;如果y是方阵,则x与每列y画一条曲线。2. 如果x是矩阵,y是向量,规则与上述类似。3. 如果是两个矩阵,并且大小相等,则x,y对应的每列画一条曲线。示例14x1=1 2 3;y1=1 2 3;4 5 6figure,plot(x1,y1);%每行一条曲线y2=1 2;3 4;5 6figure,plot(x1,y2);%每列一条曲线figure,plot(y1,x1);figure,plot(y2,x1);x2=1 1 1;2 2 2figure,
23、plot(x2,y1);%按列与列对应的方式画曲线 plot(x1,y1) plot(x1,y2) plot(y1,x1) plot(y2,x1)plot(x2,y1)3) 绘制多条曲线plot(x1,y1,x2,y2,.),这个命令相当于plot(x1,y1)+plot(x2,y2)+;将这些命令写在同一个函数里,Matlab自动以不同的颜色来绘制曲线。不同的矩阵,维数可以不同。示例15x=0:.1:2*pi;plot(x,sin(x),x,cos(x),x,sin(3*x);%在同一幅图中画三条曲线(一)线型与颜色格式:plot(x,y1,cs,.) stem(x,y,cs)其中c表示颜色
24、, s表示线型。plot绘图函数的参数 字元 颜色 字元 图线型态 y 黄色 . 点 k 黑色 o 圆 w 白色 x x b 蓝色 + + g 绿色 * * r 红色 - 实线 c 亮青色 : 点线 m 锰紫色 -. 点虚线 - 虚线 (二)图形标记在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。添加图名的语句是title(s);s就是图名,是一个字符串,可以是中文的。title(加图形标题); %绘制一个周期的正弦曲线,并添加标题”sin(x)的图像”x=0:.1:2*pi;y=sin(x);plot(x,y);title(s
25、in(x)的图像) %添加标题添加坐标轴名:xlabel(s),ylabel(s),分别添加横纵坐标轴名称。xlabel(加X轴标记); ylabel(加Y轴标记); x=0:.1:2*pi;y=sin(x);plot(x,y);title(sin(x)的图像)%添加标题xlabel(x coordinate)%添加横坐标ylabel(y coordinate)%添加纵坐标 text(X,Y,添加文本); (三)设定坐标轴用户若对坐标系统不满意,可利用axis命令对其重新设定。axis(xmin xmax ymin ymax) 设定最大和最小值axis (auto) 将坐标系统返回到自动缺省状
26、态axis (square) 将当前图形设置为方形axis (equal) 两个坐标因子设成相等axis (off) 关闭坐标系统axis (on) 显示坐标系统【例4】 在坐标范围0X2,-2Y2内重新绘制正弦曲线,其程序为:x=linspace(0,2*pi,60);生成含有60个数据元素的向量Xy=sin(x);plot(x,y);axis (0 2*pi -2 2);设定坐标轴范围(四)加图例给图形加图例命令为legend。该命令把图例放置在图形空白处,用户还可以通过鼠标移动图例,将其放到希望的位置。格式: legend(s,pos),s是字符串,pos是位置,表 pos取值对应的实际
27、位置pos012341位置自动取最佳位置右上角(默认)左上角左下角右下角图右侧示例 在图形窗口添加文字注释x=0:.1:2*pi;plot(x,sin(x);hold onplot(x,cos(x),o);title(y1=sin(x),y2=cos(x);%添加标题xlabel(x)%添加坐标名legend(sin(x),cos(x),4)%在图的右下角添加注释text(pi,sin(pi),x=pi);%在pi,sin(pi)处添加文字注释(一)subplot(m,n,p)该命令将当前图形窗口分成mn个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。【例6】 在一
28、个图形窗口中同时绘制正弦、余弦、正切、余切曲线,程序为:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps); eps为系统内部常数ct=cos(x)./(sin(x)+eps);subplot(2,2,1); 分成22区域且指定1号为活动区plot(x,y);title(sin(x); axis (0 2*pi -1 1); subplot(2,2,2);命令为subplot(m,n,k)%使mn幅子图中的第k幅为当前图示例31演示子图命令x=0:.1:2*pi;subplot(2,2,1);%将绘图区分为22的区域,当
29、前为第一幅plot(x,sin(x);subplot(4,4,3)%将绘图区分为44的区域,当前为第三幅plot(x,sin(2*x)subplot(4,4,4)%将绘图区分为44的区域,当前为第四幅plot(x,sin(3*x)subplot(4,4,7)%将绘图区分为44的区域,当前为第七幅plot(x,sin(4*x)subplot(4,4,8)%将绘图区分为44的区域,当前为第八幅plot(x,sin(5*x)subplot(2,2,3);%将绘图区分为22的区域,当前为第三幅plot(x,cos(x),o);subplot(2,2,4);%将绘图区分为22的区域,当前为第四幅plot
30、(x,cos(2*x),.);结果如下(二)多图形窗口需要建立多个图形窗口,绘制并保持每一个窗口的图形,可以使用figure命令。每执行一次figure命令,就创建一个新的图形窗口,该窗口自动为活动窗口,若需要还可以返回该窗口的识别号码,称该号码为句柄。句柄显示在图形窗口的标题栏中,即图形窗口标题。用户可通过句柄激活或关闭某图形窗口,而axis、xlabel、title等许多命令也只对活动窗口有效。重新绘制上例4个图形,程序变动后如下:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(
31、x)+eps);H1=figure; 创建新窗口并返回句柄到变量H1plot(x,y); 绘制图形并设置有关属性title(sin(x); axis (0 2*pi -1 1); H2=figure; 创建第二个窗口并返回句柄到变量H2plot(x,z); 绘制图形并设置有关属性title(cos(x);(三)hold命令若在已存在图形窗口中用plot命令继续添加新的图形内容,可使用图形保持命令hold。发出命令hold on后,再执行plot命令,在保持原有图形或曲线的基础上,添加新绘制的图形。阅读如下程序:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);plot(x,y,b); 绘制正弦曲线hold on; 设置图形保持状态plot(x,z,g); 保持正弦曲线同时绘制余弦曲线axis (0 2*pi -1 1); legend(cos,sin);hold off 关闭图形保持1.4 三维图形一、 plot3函数最基本的三维图形函数为plot3,它是将二维函数plot的有关功能扩展到三维空间,用来绘制三维图形。函数格式:plot3(x1,y1,z1,c1,x2,y2,z2,c2,) 其中x1,y1,z1表示三维坐标向量,c1,c2表示线形或颜色。函数功能:以向量x,y,z为坐标,绘制三维曲线。