




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一讲 MatLab基本知识一、MatLab简介MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。MATLAB系统命令命 令含 义clear清空工作空间的变量和函数clc清空命令窗口clf清空图形窗load把文件调入变量到工作间二、基本数学运算在MATLAB下进行基本数学运算,只需将运算式直接打在提示号 后面,并按Enter键即可。MATLAB将计算的结果以ans显示。如:【例】求的算术运算结果。(1)用键盘在MATLAB指令窗中输入以下内容 (12+2*(7-4)/32(2)输入完成后,按【Enter】键,指令被执行,显示以下结果。ans = 2 也可给运算式的结果设定一个变量x:x = (5*2+1.3-0.8)*102/25 x =42 变量x的值可以在下个语句中调用:y = 2*x+1y =85 若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号“;”即可,y = 2*x+1; MATLAB会忽略所有在百分比符号(%)之后的文字,因此可使用它来对程序进行注释。【例】计算圆面积,半径r = 2,则可键入 r=2; % 圆半径r = 2, area=pi*r2; % 计算圆面积area areaarea = 12.5664. MATLAB提供基本的算术运算有: 加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (),范例为:5+3, 5-3, 5*3, 5/3, 53. 变量命名规则:1.变量名的大小写敏感。2.变量的第一个字符必须为英文字母,而且不能超过31个字符。3.变量名可以包含下连字符、数字,但不能为空格符、标点。系统预定义的变量ans预设的计算结果的变量名epsMATLAB定义的正的极小值=2.2204e-16pi内建的值(= 3.1415926.)inf值,无限大NaN无法定义一个数目i 或 j虚数单位i=j=三、数组运算与矩阵运算MATLAB的运算本质上是以数组 (array)运算和矩阵 (matrix) 运算方式进行。数组运算强调元素与元素的一一对应,而矩阵运算则采用线性代数中定义的运算方式。【例】简单矩阵的输入步骤。(1)在键盘上输入下列内容 A = 1 2 3; 4,5,6; 7 8,9 (2)按【Enter】键,指令被执行,显示以下结果:A = 1 2 3 4 5 6 7 8 9 如何提取矩阵的元素? a = 1,4,6,8,10 %一维矩阵 a(3) % a的第三个元素 x =1 2 3 4 5 6 7 84 5 6 7 8 9 10 11; %二维2x8 矩阵 x(3) % x的第三个元素ans = 2x(1 2 5) % x的第一、二、五个元素ans = 1 4 3 x(2,3) % x的第二行第三列的元素ans = 6x(1:5) % x的前五个元素ans = 1 4 2 5 3 x(10:end) % x的第十个元素后的元素ans = 8 6 9 7 10 8 11 x(10:-1:2) % x的第十个元素和第二个元素的倒排ans = 8 5 7 4 6 3 5 2 4 x(find(x5) % x中大于5的元素ans = 6 7 8 6 9 7 10 8 11 a,b=find(x5) x(4)=100 %给x的第四个元素重新赋值x = 1 2 3 4 5 6 7 8 4 100 6 7 8 9 10 11 当元素很多的时候,则须采用以下的方式: x =1:2.5:120; % 创建起始值=1,增量值=2.5,终止值=120的矩阵 a=1:7 x =linspace(0,1,100); % 起始值=0,终止值=1,元素数目=100,等分区间【0,1】 zeros(2,2) %全为0的矩阵 ones(3,3) %全为1的矩阵 rand(2,4); %均匀分布的随机矩阵 randn(2,4); %正态分布的随机矩阵 eye(3,4); %对角线为1的3*4矩阵ans = 1 0 0 0 0 1 0 0 0 0 1 0 请特别注意在MATLAB中以下几个符号的灵活运用: “( )”; “ ”;“;”;“:”;“,”【例】 x1 =120:-2:60; a = x(2,:); b = x(:,2); c = x(1:2,:); %矩阵的拆分 d = ones(2,3); e = eye(2,3); f = d, e; 列的合并 %矩阵的合并 f = d; e; 行的合并 矩阵的基本运算:加 (+)、减 (-)、乘 (*)、左除 (/)、右除 ()、幂次方 ()、转置( ) 矩阵的数组运算:加 (+)、减 (-)、乘 (.*)、左除 (./)、右除 (.)、幂次方 (.) 注意:当进行数组运算时,则把矩阵看成是数组。四、MATLAB常用数学函数三角函数和双曲函数(标量函数)名称含义名称含义名称含义sin正弦csc余割atanh反双曲正切cos余弦asec反正割acoth反双曲余切tan正切acsc反余割sech双曲正割cot余切sinh双曲正弦csch双曲余割asin反正弦cosh双曲余弦asech反双曲正割acos反余弦tanh双曲正切acsch反双曲余割atan反正切coth双曲余切atan2四象限反正切acot反余切asinh反双曲正弦sec正割acosh反双曲余弦指数函数(标量函数)名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根复数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag复数虚部圆整函数和求余函数(标量函数)名称含义名称含义ceil向+圆整rem求余数fix向0圆整round向靠近整数圆整floor向-圆整sign符号函数mod模除求余l l其他函数(向量函数)名称含义名称含义min最小值max最大值mean平均值median中位数std标准差diff相邻元素的差sort排序length个数(长度)norm欧氏长度sum总和【例】指令行操作过程示例。(1)若想计算的值,那么用户应依次键入以下字符 y1=2*sin(0.3*pi)/(1+sqrt(5) (2)按【Enter】键,该指令便被执行,并给出结果【例】指令行操作过程示例。 x=0:pi/20:pi; y=sin(x);【例】指令行操作过程示例。 x=rand(3,4); y1=min(x); y1= mean(x);五、 二维平面图形绘制二维平面曲线的基本命令为plot。 x=0:0.001:10; % 0到10的1000个点的x座标 y=sin(x); % 对应的y座标 plot(x,y); % 绘图 Y=sin(10*x); plot(x,y,r:,x,Y,b) % 同时画两个函数 若要添加图线型态(Line style),方法如下: plot(x,sin(x),r*) 用axis(xmin,xmax,ymin,ymax)函数来调整图轴的范围 axis(0,6,-1.5,1) MATLAB也可对图形加上各种注解与处理: xlabel(x轴); % x轴注解 ylabel(y轴); % y轴注解 title(余弦函数); % 图形标题 legend(y = cos(x); % 图形注解 gtext(y = cos(x); % 图形注解 ,用鼠标定位注解位置 grid on; % 显示格线 【例】画椭圆 a = 0:pi/50:2*pi;%角度 X = cos(a)*3;%参数方程 Y = sin(a)*2; plot(X,Y); xlabel(x), ylabel(y); title(椭圆) 图形窗口的分割一般用命令subplot:subplot(2,2,1);subplot(2,3,4);基本绘图函数命 令含 义plot建立向量或矩阵各队队向量的图形title给图形加标题xlabel给x轴加标记ylabel给y轴加标记text在图形指定的位置上加文本字符串gtext在鼠标的位置上加文本字符串grid打开网格线plot绘图函数的叁数字元颜色字元图线型态y黄色.点k黑色o圆w白色xxb蓝色+g绿色*r红色-实线c亮青色:点线m锰紫色-.点虚线-虚线 MATLAB还有其他各种二维绘图函数,以适合不同的应用 整理:其他各种二维绘图函数bar长条图errorbar图形加上误差范围fplot较精确的函数图形polar极座标图hist累计图rose极座标累计图stairs阶梯图stem针状图fill实心图feather羽毛图当资料点数量不多时,长条图是很适合的表示方式: close all; % 关闭所有的图形视窗 x=1:10; y=rand(size(x); bar(x,y); 如果已知资料的误差量,就可用errorbar来表示。下例以单位标准差来做资料的误差量: x = linspace(0,2*pi,30); y = sin(x); e = std(y)*ones(size(x); errorbar(x,y,e) 对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例: fplot(sin(1/x), 0.02 0.2); % 0.02 0.2是绘图范围 若要产生极座标图形,可用polar: theta=linspace(0, 2*pi); r=cos(4*theta); polar(theta, r); 对於大量的资料,我们可用hist来显示资料的分情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分: x=randn(5000, 1); % 产生5000个 m=0,s=1 的高斯乱数 hist(x,20); % 20代表长条的个数 rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制表示: x=randn(1000, 1); rose(x); stairs可画出阶梯图: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stairs(x,y); stems可产生针状图,常被用来绘制数位讯号: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y); stairs将资料点视为多边行顶点,并将此多边行涂上颜色: x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y,b); % b为蓝色 feather将每一个资料点视复数,并以箭号画出: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); feather(z); compass和feather很接近,只是每个箭号的起点都在圆点: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); compass(z); 六、 脚本M文件(1)编写脚本M文件的步骤l 点击MATLAB指令窗工具条上的New File图标 ,就可打开如图所示的MATLAB文件编辑调试器。用户即可在空白窗口中编写程序。【例】输入如下一段程序 (picture.m)x=linspace(0,2*pi,20); y=sin(x); plot(x,y,r+) title(2D plot) (2)运行文件l 使picture.m所在目录成为当前目录(系统默认路径),或让该目录处在MATLAB的搜索路径上。l 然后在指令窗口运行以下指令,便可得到图形。picture 【例】输入如下一段程序 (area.m)% 新建M-file, area.m % 计算一个球的体积 r = input(Type radius 输入半径:); Area=pi*r2; volume=(4/3)*pi*r3; fprintf(半径 The radius is %12.5fn,r) fprintf(面积 The area of a circle is %12.5fn,Area) fprintf(体积 The volume of a sphere is %12.5fn, volume)七、函数M文件1、基本格式function = ()2、函数M文件必须遵循以下特定的规则:1) 函数名和文件名必须相同。 2) 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。【例】,计算f(1)*f(2)+f2(3) 首先建立一个M函数:fun1.mfunction Y= fun1(x)Y=(x3 - 2*x2 + x - 6.3)/(x2 + 0.05*x - 3.14); 在指令窗口运行以下指令: fun1(1)*fun1(2)+fun1(3)*fun1(3)ans = -12.6023【例】 计算阶乘的函数 fact.mfunction output = fact(n) if n = 1 output = 1; return; end output = n*fact(n-1); 【例】M函数文件示例。circle.mfunction sa = circle(r,s)%CIRCLEplot a circle of radii r in the line specified by s.%r指定半径的数值%s指定线色的字符串%sa圆面积% circle(r)利用蓝实线画半径为 r 的圆周线.% circle(r,s)利用串 s 指定的线色画半径为 r 的圆周线.% sa=circle(r)计算圆面积,并画半径为 r 的蓝色圆面.% sa=circle(r,s)计算圆面积,并画半径为 r 的 s 色圆面.if nargin2 error(输入宗量太多。);end;if nargin=1 s=b;end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);if nargout=0 plot(x,s);else sa=pi*r*r; fill(real(x),imag(x),s)endaxis(square)八、MATLAB控制流1、for循环结构For循环的一般形式是:for = :commandsend步长为1时可以省略,在for和end语句之间的commands按循环参数的每一个参数值重复执行。【例】 for n=1:10 x(n)=sin(n*pi/10); end For循环可按需要嵌套。n=0:1:10;for i=1:11for j=1:11y(i)=sin(n(i);n(j)=n(j)*10;endend 可以利用break命令跳出for循环2、while循环结构与For循环以固定次数求一组命令的值相反,While 循环以不定的次数求一组语句的值。While循环的一般形式是: while commands end只要在表达式里的所有元素为真,就执行while和end 语句之间的commands。【例】 num=0;EPS=1; while (1+EPS)1 EPS=EPS/2; num=num+1; end【例】x = zeros(1,6); % x是一个的零矩阵 i = 1; while i = 6, x(i) = 1/i; i = i+1; end 可以利用break命令跳出while循环 while循环可按需要嵌套。【例】Fibonacci数组的元素满足Fibonacci 规则: ,;且。现要求该数组中第一个大于10000的元素。a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i); %当现有的元素仍小于10000时,求解下一个元素。 i=i+1;end;i,a(i), i = 21 ans = 10946 3、if-else-end分支结构很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是: if commands end如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的commands【例】 apples=10; cost=apples
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成品品种分类培训
- 智能小车启蒙课件
- 课件模板护眼
- 住陪师资培训
- 课件样片拍摄
- 新进教师培训心得
- 教师招聘之《小学教师招聘》题库检测试题打印附答案详解【突破训练】
- 考眼力考试题及答案
- 矿井电气防爆检查工专业技能考核试卷及答案
- 混合气生产工工艺考核试卷及答案
- 房屋学位租赁合同协议书
- 环保行业风险管理办法
- 2025年高速公路标杆企业组织效能报告
- 政府装监控合同范本
- 代运营品牌合作合同范本
- 拆除工程环境保护方案及措施
- 重症凝血病标准化评估中国专家共识(2025版)
- 2025年度麻精药品抗菌药物抗肿瘤药物培训考核试题(含答案)
- 新交际英语(2024)二年级上册全册核心素养教案
- 同济大学《通信原理》2024-2025学年第一学期期末试卷
- 物流业务员培训课件
评论
0/150
提交评论