计算机应用基础-1-语言基础_第1页
计算机应用基础-1-语言基础_第2页
计算机应用基础-1-语言基础_第3页
计算机应用基础-1-语言基础_第4页
计算机应用基础-1-语言基础_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

按列方式存储1.1常量,变量和数据类型例1-1>>a=[‘house’;’floor’;’porch’]a=housefloorporch注意:字符串长度相同;英文状态下输入。多维数组,逻辑数组,空数组向量,矩阵和多维数组标量:单一值表征的量;向量:由标量的一组有序集合表示的量;数组:是元素的一维或多维排列,包含一维数组x(i),二维数组x(i,j)和多维数组x(I,j,k,…)1.1常量,变量和数据类型1.1常量,变量和数据类型向量与矩阵的操作:(1)元素操作对于t=[135;246]的矩阵

t(2,1)%显示一个元素

t(2,1)=7%替换一个元素(2)形成新矩阵

t1=[t;t](3)矩阵的转阵用(’)(4)行列操作

p1=t1(:,2)%全部第二列的元素

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

四数据的类型字符型和字符窜数值型整型,包括8位,16位以及32位。单/双精度浮点型以及双精度复数矩阵双精度复数矩单元数组函数句柄阵,表示位m*n数组可以用来保存函数的所有信息,以便调用1.1常量,变量和数据类型1.2数据的输出与输入一数据的输出

Save命令:可以将工作环境的几个或全部变量保存到文件中。例:

>>a=[1,2]b=[345]c=[-1068]savefile1为了便于读取,可以将文件存为文本文件(”.txt”)Savefile4.txt–ascii(注意,有空格)savefile='test.mat';p=rand(1,10);q=ones(10);save(savefile,'p','q')1.2数据的输出与输入Save命令格式用fprintf函数可以按格式将数据输出至屏幕或写格式化数据到文件中。>>x=35;y=68.3;string=‘results:’;fprintf(‘\t%s\tx=%5d,\ty=%8.2f’,string,x,y)用Disp()函数将结果输到屏幕上1.2数据的输出与输入1.2数据的输出与输入数据的输入

利用M文件产生数据

用Load命令从Mat文件或文本文件直接读入>>clearloadfile1whos用fscanf函数用提示输入函数input>>t=input(‘vectoroftemperature(0C)=‘)数据型文件的输入以及输出(ME_1_1.m)data1=load('6-0.txt');data2=load('6-3.txt');%facbriateingthetimeserierspointsdatat=linspace(0,10,20000);plot(datat,data1)figureplot(datat,data2)fid=fopen('10-1-3.txt','w')fprintf(fid,'%6.2f\n',data1(:))status=fclose(fid);fid=fopen('10-1-4.txt','w')fprintf(fid,'%6.2f\n',data2(:))status=fclose(fid);1.2数据的输出与输入1.3逻辑判断及流程控制

a=2+2==4a=(2+2==4)a=(3<4)a=(4<3)a=(3<=4)a=(4<=3)a=(4>3)a=(3>4)等于a=1a=1小于a=1a=0小于等于a=1a=0大于a=1a=0a=(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矩阵中不为零元素的序号,矩阵元素是按列排序号的。1.关系运算A=magic(6)A=351626192433272123253192222720828331710153053412141643629131811rem(A,3)ans=210210021021102102210210021021102102p=(rem(A,3)==0)p=001001100100010010001001100100010010lp=find(p)'lp=2591213162023273031341.3逻辑判断及流程控制

矩阵元素的序号排法:

n×m阵中下标为(j,k)的元素序号为l=(k-1)*n+j1.3逻辑判断及流程控制

数学及逻辑运算符号逻辑字符检查

位运算

集合运算

1.3逻辑判断及流程控制

(1)if语句if(表达式)语句组A,endif(表达式1)语句组A,else语句组B,endif(表达式1)语句组A,elseif(表达式2)语句组B,else语句组C,end1.4流程控制语句

n=input('n='),ifrem(n,2)==0a='even',elsea='odd',end

n=7a=odd;n=8a=evenn=[]a=odd

n=input('n='),ifisempty(n)==1a='empty',

elseifrem(n,2)==0a='even',elsea='odd',end

n=[]a=empty

输入数n,判断奇偶性。如果用户没有键入数就回车,程序会判断为odd。修改为用户无输入时程序自动中止。1.4流程控制语句(2)while语句

while(表达式)语句组A,end

y=1;while1+y>1,y1=yy=y/2;end,y1y1=2.2204e-016求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与1的差别为止。

1.4流程控制语句(3)

for语句

fork=初值:增量:终值语句组A,end

将语句组A反复执行N次,每次执行时程序中的k值不同。

N=1+(终值-初值)/增量用for语句求三角函数表forx=0:0.1:pi/4disp([x,sin(x),cos(x),tan(x)]),end运行结果

xsin(x)cos(x)tan(x)

00101/10839/84041195/12011499/149401/5209/1052295/301374/18453/10409/13841647/1724275/8892/5368/9452882/31291777/42031/2501/10451699/1936820/15013/51153/2042430/521979/14317/10947/1470992/1297486/577

1.4流程控制语句

列出构成Hilbert矩阵的程序formatrat显示形式是分数近似

n=input('n='),formatratfori=1:n,forj=1:n,h(i,j)=1/(i+j-1);end,end,hn=5h=11/21/31/41/51/21/31/41/51/61/31/41/51/61/71/41/51/61/71/81/51/61/71/81/9

增加可读性formatrat,n=input(‘n=’)fori=1:nforj=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…….Otherwise语句组Nend

当表达式的值(或字符串)与某case语句中的值(或字符串)相同时,它就执行该case语句后的语句组,然后跳到终点的end。

case语句可以有N-1个,如果没有任何一个case值能与表达式值相符,则执行otherwise后面的语句组N。1.4流程控制语句n=input('n='),switchmod(n,2),case1,a='奇',case0,a='偶',otherwise,a='空',endn=5a=奇n=input('n='),switchrem(n,2),case1,a='奇',case0,a='偶',otherwise,a='空',endn=8a=偶判断输入数n的奇、偶、空的程序mod(x,m)x整除m取正余数,rem(a,b)a整除b,求余数n=负数n=-5a=奇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)图形屏幕控制命令图形屏幕可以开、关,可以开几个图形窗,可以在一个图形窗内华几幅分图,每幅分图可以用不同坐标。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基本绘图方法t=0:.2:2*pi;y=exp(-0.5*t).*sin(5*t+1);subplot(1,1,1)loglogsemilogxsemilogypolar(theta,rho)取消子图绘出以log10-log10为坐标刻度的对数图使用半对数刻度绘图,x轴为log10刻度,y轴为线性刻度。使用半对数刻度绘图,y轴为log10刻度,x轴为线性刻度。极坐标绘图,角度theta为一个坐标,单位是弧度,另一坐标是矢径rho。1.5基本绘图方法二维图形函数库1.5基本绘图方法(4)坐标比例和尺寸的设定—axis命令1.5基本绘图方法v=axisaxis('equal')axis('square')v=01015.三维曲线和曲面

(1)空间曲线绘制-plot3

plot3(x,y,z,'s')z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z,'r')绘制空间曲线,s是线型颜色符(2)空间曲面的绘制meshsurf直线--连接相邻的点构成三维曲面小平面--连接相邻的点构成三维曲面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),pauseR=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是X-Y平面上的向径,绘制sin(r)/r函数的立体图。

X、Y方向各有33个样本点,size多维矩阵的各维长度。共建立33*33=1089个网格点的坐标矩阵X和Y,形成33*33网格的矩阵;

R表示数据点到原点的距离。在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),pausetitle('meshc(z),shadingflat'),shadingflatSubplot(2,2,2),R=sqrt(X.^2+Y.*Y)+eps;z=sin(R)./R;mesh(z),pausetitle('meshz(z),shadinginterp'),shadinginterpsubplot(2,2,3),R=abs(X)+abs(Y)+eps;z1=sin(R)./R;surfc(z1),pausetitle('surfc(z1),shadingflat'),shadingflat,%colormp(gray)subplot(2,2,4),surfc(z1),view(20,0);rotate3dtitle('surfc(z1),view(20,0)')1.5基本绘图方法6.特殊图形和动画1.5基本绘图方法特殊图形和动画(graphics)(u)1.5基本绘图方法1.5基本绘图方法7.彩色、光照和图像作业二维直角坐标绘图练习,已知t=0:.2:2*pi;y=exp(-0.5*t).*sin(5*t+1);要求:(1)在同一张图上画四个小图,分别采用:stem,stairs,bar,fill;(2)对图进行标注,分别采用title,gtext,legend(3)对坐标进行设定ME_1_exM文件是文本文件,扩展名*.m。(example.m)可以用任何编辑器来建立,可直接阅读。MATLAB程序可直接调用M文件并执行。M文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他M文件来调用,函数文件可以递归调用(自己调用自己)。MATLAB软件的大部分功能是来自其建立的函数集。1.主程序文件主程序文件格式特征:(1)用clear、closeall等语句开始,清除原有的变量和图形。注释行以%号开始,增加可读性。MATLAB不执行%号后面的任何内容。在键入“help文件名example.m”时,屏幕会显示以%号起始的行的内容,注释可以是汉字的。1.6M文件、M函数及程序调试(2)程序的主体全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。全局变量语句:global变量名1变量名2……程序必须用半角英文字母和符号编制(包括标点符号),只有%号后面的注释可以用中文。要注意流程控制语句的缩进及与end的对应关系。选项可以自动对程序进行缩进排版。元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。

(3)M文件的文件名、路径名不能用中文,要按MATLAB的标识符编制,因为M文件也就是MATLAB的调用命令。在MATLAB的命令窗键入程序的M文件名后,系统就开始执行M文件中的程序。1.6M文件、M函数及程序调试[例1]列出一个求fibonnaci数的程序,它是一个数列,从[1,1]开始,由数列的最后两个元素之和生成新的元素,依次递推。%计算fibonnaci数的M文件clear,closeallN=input('输入最大数值范围N=')f=[1,1];i=1;%变量的初始化whilef(i)+f(i+1)<N%循环条件检验f(i+2)=f(i+1)+f(i);i=i+1;%求fibonnaci数的算式endf,plot(f)%显示和绘图输入最大数值范围N=20N=20f=11235813将程序以文件名fibon.m存入一MATLAB搜索目录下,在MATLAB命令窗中键入fibon,即可执行。1.6M文件、M函数及程序调试[例2]求素数的程序。只能被自身和1除净的数。%求素数(primenumber)的程序clear,closeallN=input('N='),x=2:N;foru=2:sqrt(N)n=find(rem(x,u)==0&x~=u);x(n)=[];end,xN=44x=2357111317192329313741431.6M文件、M函数及程序调试人机交互命令:·echoon(off)

在执行M文件每行程序前先显示其内容。·pause(n)

程序执行到此,暂停n秒,再继续。·keyboard程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作,键入字符串return,恢复运行原来的程序。·input(‘提示符’)程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。·^c(control-c)

强行停止程序运行的命令。·menu

用来产生人际交互的备选择菜单的命令。1.6M文件、M函数及程序调试2.函数文件

[例3]函数文件mean.mfunctiony=mean(x)

%文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。%MEAN求平均值。对于向量,mean(x)返回该向量x中各元素的平均值%对于矩阵,mean(x)是一个包含各列元素平均值的行向量[m,n]=size(x);

%变量m,n和y都是函数mean的局部变量,当mean文件执行完毕,这些变量值会自动消失,不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者看作各自无关的变量。如果希望将两者看作同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。

Ifm==1M=n;end%处理单行向量y=sum(x)/m1.6M文件、M函数及程序调试MATLAB语言的函数的基本结构function[返回变量表]=函数名(输入变量表)注释说明语句,由%引导输入,返回变量格式检测函数体语句nargin,nargout,varargin,varargout函数文件是用来定义子程序的。与主程序文件的主要区别有3点:(1)由function起头,后面跟的函数名,函数名必须与文件名相同。(2)由输入输出变元(变量),可以进行变量传递。(3)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。1.6M文件、M函数及程序调试z=magic(7)mean(z)%对输入变元x赋值,应把x代换成主程序中的已知变量。假如它是一个已知向量或矩阵Z,可以写成mean(Z),该变量Z通过变元替换传递给mean函数后,在子程序内,它就变成了局部变量x。z=30394811019283847791827294668172635375141625343645131524334244421233241433122231404921120ans=252525252525251.6M文件、M函数及程序调试[例4]多输入变量函数logspace,用于生成等比分割的数组。functiony=logspace(d1,d2,n)%LOGSPACE对数均分数组%LOGSPACE(d1,d2)在10d1与10d2之间生成长度为50的对数均分数组%如果d2为pi,则这些点在10d1和pi之间%LOGSPACE(d1,d2,n)生成的数组长度为n,n的默认值为50ifnargin==2n=50;end%输入变元分析及n的默认值设置ifd2==pid2=log10(pi);end%d2为pi时的设置y=(10).^[d1+(0:n-2)*(d2-d1)/(n-1),d2];%将结果返回到输出变元特定变量nargin表示输入变元的数目。nargout表示输出变元数目的变量。MATLAB常常根据nargin和nargout的数目不同而调用不同的程序段,从而体现它的智能作用。1.6M文件、M函数及程序调试一程序调试方法

1.1程序错误:(1)语法错误;(2)运行错误;(3)逻辑错误;

1.2debug菜单

1.3breakpoint菜单

1.4设置/删除断点方法

1.5在断点处检查程序1.6M文件、M函数及程序调试1.6运行程序选定部分1.7单步执行1.8绕过部分代码1.9运行到光标处二程序框架

2.1程序的定义

2.2主程序

2.3程序内部函数1.6M文件、M函数及程序调试程序调试主程序不需要专门的调试命令,需要用调试命令的主要是函数程序。因为函数程序出错停机时,变量不能保存,无现场记录。会给调试带来很大困难,解决方法:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错依据。(2)在子程序中适当部位加keyboard命令。系统会暂停,等待用户键入命令。这是子程序的变量还存在于工作空间中,可以对它们进行检查。(3)将函数文件的第一行加%号,成为程序文件,进行初步调试。第一行中的输入变元,可改用input或赋值语句来输入,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论