计算机应用基础1语言基础.ppt

上传人:李司机 文档编号:3999981 上传时间:2023-03-31 格式:PPT 页数:81 大小:2.32MB
返回 下载 相关 举报
计算机应用基础1语言基础.ppt_第1页
第1页 / 共81页
计算机应用基础1语言基础.ppt_第2页
第2页 / 共81页
计算机应用基础1语言基础.ppt_第3页
第3页 / 共81页
计算机应用基础1语言基础.ppt_第4页
第4页 / 共81页
计算机应用基础1语言基础.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《计算机应用基础1语言基础.ppt》由会员分享,可在线阅读,更多相关《计算机应用基础1语言基础.ppt(81页珍藏版)》请在三一办公上搜索。

1、第一章Matlab编程基础,1.1 常量,变量和数据类型1.2 数据的输出与输入1.3 函数和过程1.4 程序流程控制1.5 图形与可视化,1.1 常量,变量和数据类型,一 变量 不用定义,分为局部和全局变量,二 数组(array)MATLAB所用处理变量,都是以数组方式存储:包括标量(scalar),向量(vector),矩阵(matrix),字符串(string),单元数组(cell array),结构体(structure),对象(object)。,三 数组的存储方式 按列方式存储,1.1 常量,变量和数据类型,例1-1,a=house;floor;porch,a=house floor

2、 porch,注意:字符串长度相同;英文状态下输入。,多维数组,逻辑数组,空数组向量,矩阵和多维数组 标量:单一值表征的量;向量:由标量的一组有序集合表示的量;数组:是元素的一维或多维排列,包含一维数 组x(i),二维数组 x(i,j)和多维数组x(I,j,k,),1.1 常量,变量和数据类型,1.1 常量,变量和数据类型,向量与矩阵的操作:,(1)元素操作 对于 t=1 3 5;2 4 6的矩阵 t(2,1)%显示一个元素 t(2,1)=7%替换一个元素(2)形成新矩阵 t1=t t(3)矩阵的转阵用()(4)行列操作 p1=(:,2)%全部第二列的元素 p2=t1(2,:)p2=t1(2,

3、:)%全部第三行元素,定义数组的常用命令,rand%产生元素为均匀分布的随机数数组randn%产生元素为正态分布的随机数数组eye%产生二维对角元为1,其余为0的数组ones%产生元素全为1的数组zeros%产生元素全为0的数组diag%产生二维对角数组magic%产生二维魔方数组meshgrid%产生平面的网格点数据,1.1 常量,变量和数据类型,二维数组的信息获取,length%矩阵最长维数的长度ndims%矩阵的维数numel%元素的个数size%每一维的长度例1-2 A=rand(3,5)a=length(A)b=ndims(A)c=numel(A)m,n=size(A),1.1 常量

4、,变量和数据类型,四 数据的类型 字符型和字符窜 数值型 整型,包括8位,16位以及32位。单/双精度浮点型以及双精度复数矩阵 双精度复数矩阵,表示位m*n数组 单元数组 函数句柄 可以用来保存函数的所有信息,以便调用,1.1常量,变量和数据类型,1.2 数据的输出与输入,一 数据的输出 Save 命令:可以将工作环境的几个或全部变量保存到文件中。,例:a=1,2 b=3 4 5 c=-10 6 8 save file1,为了便于读取,可以将文件存为文本文件(”.txt”)Save file4.txt ascii(注意,有空格),savefile=test.mat;p=rand(1,10);q

5、=ones(10);save(savefile,p,q),save(d:mymfilesjune10,vol,temp,-ASCII),1.2 数据的输出与输入,Save 命令 格式,用 fprintf 函数 可以按格式将数据输出至屏幕或写格式化数据到文件中。,x=35;y=68.3;string=results:;fprintf(t%stx=%5d,ty=%8.2f,string,x,y),用Disp()函数将结果输到屏幕上,1.2 数据的输出与输入,1.2 数据的输出与输入,数据的输入 利用M文件产生数据 用Load命令从Mat文件或文本文件直接读入,clear load file1 wh

6、os,用fscanf 函数用提示输入函数input,t=input(vector of temperature(0C)=),数据型文件的输入以及输出(ME_1_1.m),data1=load(6-0.txt);data2=load(6-3.txt);%facbriateing the time seriers points datat=linspace(0,10,20000);plot(datat,data1)figure plot(datat,data2)fid=fopen(10-1-3.txt,w)fprintf(fid,%6.2fn,data1(:)status=fclose(fid);

7、fid=fopen(10-1-4.txt,w)fprintf(fid,%6.2fn,data2(:)status=fclose(fid);,1.2 数据的输出与输入,1.3 逻辑判断及流程控制,a=2+2=4a=(2+2=4)a=(33)a=(34),等于a=1a=1小于a=1 a=0小于等于a=1a=0大于a=1a=0,a=(4=3)a=(3=4)a=(3=4)A=magic(6)rem(A,3)p=(rem(A,3)=0)lp=find(p),大于等于a=1a=0不等于a=1魔方矩阵,每行、每列、对角线的元素之和=(n3+n)/2A整除3,求余数余数为0,是真,即整除找出p矩阵中不为零元素

8、的序号,矩阵元素是按列排序号的。,1.关系运算,A=magic(6)A=35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11,rem(A,3)ans=2 1 0 2 1 0 0 2 1 0 2 1 1 0 2 1 0 2 2 1 0 2 1 0 0 2 1 0 2 1 1 0 2 1 0 2,p=(rem(A,3)=0)p=0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0

9、 0 1 0,lp=find(p)lp=2 5 9 12 13 16 20 23 27 30 31 34,1.3 逻辑判断及流程控制,矩阵元素的序号排法:nm阵中下标为(j,k)的元素序号为 l=(k-1)*n+j,1.3 逻辑判断及流程控制,数学及逻辑运算符号,逻辑字符检查,位运算,集合运算,1.3 逻辑判断及流程控制,(1)if语句if(表达式)语句组A,endif(表达式1)语句组A,else 语句组B,endif(表达式1)语句组A,elseif(表达式2)语句组B,else 语句组C,end,1.4 流程控制语句,n=input(n=),if rem(n,2)=0 a=even,el

10、se a=odd,end n=7 a=odd;n=8 a=even n=a=odd n=input(n=),if isempty(n)=1 a=empty,elseif rem(n,2)=0 a=even,else a=odd,end n=a=empty,输入数n,判断奇偶性。如果用户没有键入数就回车,程序会判断为odd。修改为用户无输入时程序自动中止。,1.4 流程控制语句,(2)while语句while(表达式)语句组A,end,y=1;while 1+y1,y1=y y=y/2;end,y1 y1=2.2204e-016,求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与

11、1的差别为止。,1.4 流程控制语句,(3)for语句for k=初值:增量:终值 语句组A,end将语句组A反复执行N次,每次执行时程序中的k值不同。N=1+(终值-初值)/增量,用for语句求三角函数表for x=0:0.1:pi/4 disp(x,sin(x),cos(x),tan(x),end运行结果 x sin(x)cos(x)tan(x)0 0 1 0 1/10 839/8404 1195/1201 1499/14940 1/5 209/1052 295/301 374/1845 3/10 409/1384 1647/1724 275/889 2/5 368/945 2882/31

12、29 1777/4203 1/2 501/1045 1699/1936 820/1501 3/5 1153/2042 430/521 979/1431 7/10 947/1470 992/1297 486/577,1.4 流程控制语句,列出构成Hilbert矩阵的程序 format rat显示形式是分数近似 n=input(n=),format rat for i=1:n,for j=1:n,h(i,j)=1/(i+j-1);end,end,h,n=5h=1 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 1/7 1/4 1/5 1/6

13、1/7 1/8 1/5 1/6 1/7 1/8 1/9,增加可读性format rat,n=input(n=)for i=1:n for j=1:n,h(i,j)=1/(i+j-1);endendh,在if,for,while与表达式之间留空格,在表达式与语句组之间必须用空格或逗号分隔,必须用逗号或分号分隔end和else。break 是中止循环的命令,在多重循环中,break只能使程序跳出包含它的最内部的那个循环。,1.4 流程控制语句,(4)switch语句,switch-case-otherwiseswitch 表达式(标量或字符串)case 值1语句组ACase 值2语句组B.Othe

14、rwise语句组Nend,当表达式的值(或字符串)与某case语句中的值(或字符串)相同时,它就执行该case语句后的语句组,然后跳到终点的end。case语句可以有N-1个,如果没有任何一个case值能与表达式值相符,则执行otherwise后面的语句组N。,1.4 流程控制语句,n=input(n=),switch mod(n,2),case 1,a=奇,case 0,a=偶,otherwise,a=空,endn=5 a=奇n=input(n=),switch rem(n,2),case 1,a=奇,case 0,a=偶,otherwise,a=空,end n=8 a=偶,判断输入数n的奇

15、、偶、空的程序mod(x,m)x整除m取正余数,rem(a,b)a整除b,求余数n=负数 n=-5 a=奇n=-8a=偶,1.4 流程控制语句,1直角坐标中的两维曲线(1)plot(y)-输入一个数组的情况,(2)Plot(x,y)-输入两个数组的情况,1.5 基本绘图方法,2线型、点型和颜色,3多条曲线的绘制有四种方法在一张图上显示多条曲线(1)用plot(t,y1,y2,)命令,1.5 基本绘图方法,(2)用hold命令,(4)用plotyy命令,(3)在plot后使用多输入变量,1.5 基本绘图方法,4.屏幕控制和其他二维绘图(1)图形屏幕控制命令图形屏幕可以开、关,可以开几个图形窗,可

16、以在一个图形窗内华几幅分图,每幅分图可以用不同坐标。,1.5 基本绘图方法,通用图形函数(graphics)(h),1.5 基本绘图方法,subplot(2,2,1),stem(t,y);title(stem(t,y)subplot(2,2,2),stairs(t,y);title(stairs(t,y)subplot(2,2,3),bar(t,y);title(bar(t,y)subplot(2,2,4),fill(t,y,r);title(fill(t,y,r),1.5 基本绘图方法,subplot(1,1,1)loglogsemilogxsemilogypolar(theta,rho),

17、取消子图绘出以log10-log10为坐标刻度的对数图使用半对数刻度绘图,x轴为log10刻度,y轴为线性刻度。使用半对数刻度绘图,y轴为log10刻度,x轴为线性刻度。极坐标绘图,角度theta为一个坐标,单位是弧度,另一坐标是矢径rho。,1.5 基本绘图方法,二维图形函数库,1.5 基本绘图方法,(4)坐标比例和尺寸的设定axis命令,1.5 基本绘图方法,v=axisaxis(equal)axis(square)v=0 1 0 1,5.三维曲线和曲面(1)空间曲线绘制-plot3,plot3(x,y,z,s)z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,

18、y,z,r)绘制空间曲线,s是线型颜色符,(2)空间曲面的绘制mesh surf,直线-连接相邻的点构成三维曲面 小平面-连接相邻的点构成三维曲面,1.5 基本绘图方法,sinc(r)=sin(r)/rx=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.*X+Y.*Y);z=sin(R)./R;mesh(z),pause,r是X-Y平面上的向径,绘制sin(r)/r函数的立体图。X、Y方向各有33个样本点,size多维矩阵的各维长度。共建立33*33=1089 个网格点的坐标矩阵X和Y,形成33*33网格的矩阵;R表示数据点到原点

19、的距离。,R=sqrt(X.*X+Y.*Y)+eps;z=sin(R)./R;figure(2),mesh(z)R=abs(X)+abs(Y)+eps;z1=sin(R)./R;figure(3),surf(z1),在R=0(原点)处出现0/0运算,得NaN结果。eps浮点数相对精度,消除NaN。abs(X)+abs(Y)称为一范数,1.5 基本绘图方法,(3)其他三维绘图命令,1.5 基本绘图方法,subplot(2,2,1),R=sqrt(X.2+Y.*Y);z=sin(R)./R;meshc(z),pause title(meshc(z),shading flat),shading fl

20、at,Subplot(2,2,2),R=sqrt(X.2+Y.*Y)+eps;z=sin(R)./R;mesh(z),pausetitle(meshz(z),shading interp),shading interp,subplot(2,2,3),R=abs(X)+abs(Y)+eps;z1=sin(R)./R;surfc(z1),pausetitle(surfc(z1),shading flat),shading flat,%colormp(gray),subplot(2,2,4),surfc(z1),view(20,0);rotate3dtitle(surfc(z1),view(20,0

21、),1.5 基本绘图方法,6.特殊图形和动画,1.5 基本绘图方法,特殊图形和动画(graphics)(u),1.5 基本绘图方法,1.5 基本绘图方法,7.彩色、光照和图像,M文件是文本文件,扩展名*.m。(example.m)可以用任何编辑器来建立,可直接阅读。MATLAB程序可直接调用M文件并执行。M文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他M文件来调用,函数文件可以递归调用(自己调用自己)。MATLAB软件的大部分功能是来自其建立的函数集。1主程序文件主程序文件格式特征:(1)用clear、close all等语句开始,清除原有的变量和图

22、形。注释行以%号开始,增加可读性。MATLAB不执行%号后面的任何内容。在键入“help 文件名example.m”时,屏幕会显示以%号起始的行的内容,注释可以是汉字的。,1.6 M文件、M函数计程序调试,(2)程序的主体全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。全局变量语句:global 变量名1 变量名2 程序必须用半角英文字母和符号编制(包括标点符号),只有%号后面的注释可以用中文。要注意流程控制语句的缩进及与end的对应关系。选项可以自动对程序进行缩进排版。元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。(

23、3)M文件的文件名、路径名不能用中文,要按MATLAB的标识符编制,因为M文件也就是MATLAB的调用命令。在MATLAB的命令窗键入程序的M文件名后,系统就开始执行M文件中的程序。,1.6 M文件、M函数计程序调试,例1列出一个求fibonnaci数的程序,它是一个数列,从1,1开始,由数列的最后两个元素之和生成新的元素,依次递推。%计算fibonnaci数的M文件clear,close allN=input(输入最大数值范围 N=)f=1,1;i=1;%变量的初始化while f(i)+f(i+1)N%循环条件检验f(i+2)=f(i+1)+f(i);i=i+1;%求fibonnaci数的

24、算式endf,plot(f)%显示和绘图输入最大数值范围 N=20N=20f=1 1 2 3 5 8 13将程序以文件名fibon.m存入一MATLAB搜索目录下,在MATLAB命令窗中键入fibon,即可执行。,1.6 M文件、M函数计程序调试,例2求素数的程序。只能被自身和1除净的数。%求素数(prime number)的程序clear,close allN=input(N=),x=2:N;for u=2:sqrt(N)n=find(rem(x,u)=0 end,x N=44x=2 3 5 7 11 13 17 19 23 29 31 37 41 43,1.6 M文件、M函数计程序调试,人

25、机交互命令:echo on(off)在执行M文件每行程序前先显示其内容。pause(n)程序执行到此,暂停n秒,再继续。keyboard程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作,键入字符串return,恢复运行原来的程序。input(提示符)程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。c(control-c)强行停止程序运行的命令。menu 用来产生人际交互的备选择菜单的命令。,1.6 M文件、M函数计程序调试,2函数文件 函数文件是用来定义子程序的。与主程序文件的主要区别有3点:(1)由function起头,后面跟的函数名,

26、函数名必须与文件名相同。(2)由输入输出变元(变量),可以进行变量传递。(3)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。例3函数文件mean.m function y=mean(x)%文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。%MEAN求平均值。对于向量,mean(x)返回该向量x中各元素的平均值%对于矩阵,mean(x)是一个包含各列元素平均值的行向量m,n=size(x);%变量m,n和y都是函数mean的局部变量,当mean文件执行完毕,这些变量值会自动消失,

27、不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者看作各自无关的变量。如果希望将两者看作同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。If m=1 M=n;end%处理单行向量y=sum(x)/m,1.6 M文件、M函数计程序调试,z=magic(7)mean(z)%对输入变元x赋值,应把x代换成主程序中的已知变量。假如它是一个已知向量或矩阵Z,可以写成mean(Z),该变量Z通过变元替换传递给mean函数后,在子程序内,它就变成了局部变量x。z=30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6

28、 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20ans=25 25 25 25 25 25 25,1.6 M文件、M函数计程序调试,例4 多输入变量函数logspace,用于生成等比分割的数组。function y=logspace(d1,d2,n)%LOGSPACE 对数均分数组%LOGSPACE(d1,d2)在10d1与10d2之间生成长度为50的对数均分数组%如果d2为pi,则这些点在10d1和pi之间%LOGSPACE(d1,d2,n)生成的数组长

29、度为n,n的默认值为50if nargin=2 n=50;end%输入变元分析及n的默认值设置if d2=pi d2=log10(pi);end%d2为pi时的设置y=(10).d1+(0:n-2)*(d2-d1)/(n-1),d2;%将结果返回到输出变元特定变量nargin表示输入变元的数目。nargout表示输出变元数目的变量。MATLAB常常根据nargin和nargout的数目不同而调用不同的程序段,从而体现它的智能作用。,1.6 M文件、M函数计程序调试,程序调试主程序不需要专门的调试命令,需要用调试命令的主要是函数程序。因为函数程序出错停机时,变量不能保存,无现场记录。会给调试带来

30、很大困难,解决方法:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错依据。(2)在子程序中适当部位加keyboard命令。系统会暂停,等待用户键入命令。这是子程序的变量还存在于工作空间中,可以对它们进行检查。(3)将函数文件的第一行加%号,成为程序文件,进行初步调试。第一行中的输入变元,可改用input或赋值语句来输入,调好后再改回函数文件。(4)使用MATLAB提供的调试命令。调试命令较繁琐,不作介绍。,1.6 M文件、M函数计程序调试,基本的数据分析 MATLAB的基本数据处理功能是按列向进行的,因此要求待处理的数据矩阵按列向分类,而行向则表示数据的不同样本。例如,10个学生的

31、身高及3门课程分数列表如下:data=154 49 83 67;158 99 81 75;155 100 68 86;145 63 75 96;145 63 75 96;141 55 65 75;155 56 64 85;147 89 87 77;147 96 54 100;145 60 76 67,1.7 MATLAB的数据分析函数库(datafun函数库),一些数据处理命令的结果,1.7 MATLAB的数据分析函数库(datafun函数库),std(标准差)是指列中N个元素与该列平均值mean(data)之差的平方和开方。Trapz(求积分)可以看成求和,梯形法求积分近似于求元素和,差别在

32、于梯形法是把相邻两点数据的平均值作为数据点。10个数据只能产生9个数据点,相加以后比元素和少一组数据,把它乘以步长才真正表示了面积。其差额为半个首点和半个末点的数据和,即trapz(data)=sum(data)-0.5(data(1)+data(N)在N很大时两者的误差很小。有些数据处理命令的结果不是一个标量而是一个列向量。为了节省篇幅,只取数据中的前5行。,1.7 MATLAB的数据分析函数库(datafun函数库),产生列结果的数据处理命令,【例1-3】求,s=0;for i=1:100000 s=s+1/2i+1/3i;end s,1.3 MATLAB 语言流程控制,s=0;i=1:1

33、00000;s=sum(1./2.i+1./3.i),【例1-4】用循环求解 求最大的 m,1.3 MATLAB 语言流程控制,s=0;for i=1:10000;s=s+i;if s10000 break;end end i,1.5 MATLAB 函数的编写,函数是 MATLAB 编程的主流方法除了函数外,还可以采用 M-script 文件M-script 适合于小规模【例1-8】若最大值不为 10000,需修改程序对 m 和 10000 值的设置,不适合于M-script,5.1 MATLAB 语言的函数的基本结构,1.5 MATLAB 函数的编写,function 函数中参数及变量的个数

34、,function 返回变量表=函数名(输入变量表)注释说明语句,由%引导输入,返回变量格式检测函数体语句nargin,nargout,varargin,varargout,【例1-9】前面的要求m,10000,1.5 MATLAB 函数的编写,function m,s=findsum(k)s=0;m=0while(s=k)m=m+1;s=s+m;end,存为“findsum.m”文件,m1,s1=findsum(10000),【例1-10】函数的递归调用:阶乘,1.5 MATLAB 函数的编写,function k=my_fact(n)if n1 k=n*my_fact(n-1);else

35、k=1;end,my_fact(11),5.2 常用的基本数学函数(1),abs(x):纯量的绝对值或向量的长度 sqrt(x):开平方 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数,1.5 MATLAB 函数的编写,5.2 常用的基本数学函数(2),sin(x):正弦函数 asin(x):反正弦函数 cos(x):余弦函数 acos(x):反余弦函数

36、tan(x):正切函数 atan(x):反正切函数 sinh(x):超越正弦函数函数 asinh(x):反超越正弦函数 cosh(x):超越余弦函数 acosh(x):反超越余弦函数 tanh(x):超越正切函数 atanh(x):反超越正切函数 atan2(x,y):四象限的反正切,1.5 MATLAB 函数的编写,5.2 常用的基本数学函数(3),min(x):向量x元素最小值 max(x):向量x元素最大值 mean(x):向量x元素平均值 median(x):向量x元素中位数 length(x):向量x元素个数 sum(x):向量x元素总和std(x):向量x元素标准差 diff(x)

37、:向量x相邻元素差 norm(x):向量x欧氏长度 prod(x):向量x元素总乘积cumsum(x):向量x累计元素总和 dot(x,y):向量x和y的内积sort(x):对向量x元素进行排序cumprod(x):向量x累计元素总乘积,1.5 MATLAB 函数的编写,一 程序调试方法 1.1 程序错误:(1)语法错误;(2)运行错误;(3)逻辑错误;1.2 debug 菜单 1.3 breakpoint 菜单 1.4 设置/删除断点方法 1.5 在断点处检查程序,1.6 程序调试方法,1.6 程序调试方法,1.6 运行程序选定部分1.7 单步执行1.8 绕过部分代码1.9 运行到光标处,二 程序框架 2.1 程序的定义 2.2 主程序 2.3 程序内部函数,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号