您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > Java > 第2章MATLAB基本语法
10第二章MATLAB基本语法2.1数值、变量和表达式2.1.1数值MATLAB的语句的执行结果可以在屏幕上显示,同时赋值给指定变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制,控制方法如下:short–5位定点shortE-5位浮点shortG–5位定点或浮点,系统自动确定显示效果较好的一种long-15位定点longE-15位浮点longG-15位定点或浮点,系统自动确定显示效果较好的一种bank-元、角、分定点(美制)hex-16进制rat-近似有理数+-正数、0、负数分别用“+”、空格、“-”表示。2.1.2常量常量表达形式:-3.2、-.2、3.2、3.2e-3、3-3i、3-3j3.2e-3是科学记数法,规范的复数表达形式是3-3i,如果用j表示虚部,将自动转换为i。系统预定义了一些常量:pi:圆周率eps:计算机的最小数inf:无穷大realmin:最小正实数realmax:最大正实数nan:代表不是数i、j:虚数单位对于系统预定义常量,不得对此重复定义,否则会出问题。【例2-1】sqrt是MATLAB的内部函数。当对sqrt重新赋值后,会产生不正常现象。(1)正常运作情况sqrt(2)ans=1.4142whichsqrtsqrtisabuilt-infunction.(2)不正常运作sqrt=[1,0]%把sqrt赋值成一个两个元素的行向量sqrt=10sqrt(2)%这时该指令给出结果是0,而不是正常的平方根值1.4142ans=0whichsqrt%当用which检查sqrt在哪里时,显示的却是“内存变量”sqrtisavariable.2.1.3变量命名规则变量的名字必须以字母开头(不能超过31个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号;不能用中文和全角符号。以下变量名是非法的:1abc、abc.1。系统预定义了一些常量:ans:用于结果的缺省变量名nargin:函数的输入变量个数nargout:函数的输出变量个数对于系统预定义变量,不得对此重复定义,否则会出问题。112.1.4MATLAB表达式MATLAB采用的是表达式语言,用户输入的语句由MATLAB解释运行。MATLAB语句是由表达式和变量组成的,有两种常用形式:(1)表达式。例如:10*exp(2+i*pi/6)。(2)变量=表达式。例如:t=1:0.1:10。表达式由运算符、函数、变量名和数字组成。如果表达是一行写不完,可用“…”续行,例如表达式S=11–(1/2+1/3–1/4)+5/6...+12/7等效于S=11–(1/2+1/3–1/4)+5/6+12/72.1.5复数和复数矩阵【例2-2】复数ieziziz6232110101222,,,计算321zzzz。解:z1=2+22i%语句结束时没用“;”,赋值结果会显示出来z1=2.0000+1.0000iz2=1+10*i;%采用运算符“*”构成的直角坐标表示法,与上句比较z3=10*exp(2+i*pi/6)z3=63.9911+36.9453iz=z1/(z2*z3)z=0.0259-0.0146i【例2-3】iiiiiiA944262813351,iiiiiiB32294836251,计算C=AΧB。解:A=[1,3,1;2,2,4]+[5,3,8;6,4,9]*i;%注意矩阵元素虚部的生成方法B=[1+5i,2+6i;3+8*i,4+9*i;-2i,2+3i];%注意矩阵元素虚部的生成方法C=A*B%注意矩阵乘用“*”,数组乘用“.*”。运行结果:C=-23.0000+41.0000i-65.0000+74.0000i-36.0000+36.0000i-79.0000+88.0000i本例中复数虚部的生成方法有三种,请注意比较。注意:其中虚数单位“i”、“j”不能用大写。【例2-4】求上例复数矩阵C的实部、虚部、模和辐角。解:C_real=real(C)%real函数:求复数实部C_imag=imag(C)%imag函数:求复数虚部C_magnitude=abs(C)%abs函数:求复数模C_phase=angle(C)*180/pi%以度为单位计算相角,angle函数:求相角运行结果:C_real=-23-65-36-79C_imag=41743688C_magnitude=47.010698.493750.9117118.2582C_phase=12119.2914131.2954135.0000131.91522.1.5常用函数及基本运算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反双曲余弦表2-1三角函数和双曲函数名称含义名称含义名称含义expe为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根表2-2指数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle辐角,单位弧度imag复数虚部表2-3复数函数名称含义名称含义ceil向+∞方向取整rem求余数fix向0取整round向靠近整数取整floor向-∞方向取整sign符号函数mod模除求余表2-4取整和求余函数名称含义名称含义fiplr矩阵左右翻转diag产生或提取对角阵fipud矩阵上下翻转tril产生下三角13fipdim矩阵特定维翻转triu产生上三角rot90矩阵反时针90翻转表2-5矩阵变换函数名称含义用法fopen按指定方式打开文件fileID=fopen(filename,mode)mode:r:只读;w:只写;a:追加;r+:读写打开;w+:读写创建或打开;W:只写但不覆盖原内容;A:追加但不覆盖原内容。返回文件句柄。fclose关闭文件Status=fclose(fileID)fileID:文件句柄。关闭成功,Status=0,否则Status=-1。fprintf格式化输出到文件或屏幕fprintf(format,var1,var2…)格式化输出到屏幕,format:格式,var1:变量1。例:fprintf('显示变量b=%4.2f\n',b)fprintf(fileID,format,var1…)格式化输出到文件,例:fprintf(f1,'%4.2f\n',b)fscanf从文件中读入数据,并按格式转换A=fscanf(fileID,format)例:A=fscanf(f,’%g%g’)[A,count]=fscanf(fileID,format,size)其中,size可为整数n--返回n个数据、inf—读到文件尾、[mΧn]—读入mΧn矩阵例:[A,count]=fscanf(f,’%g%g’,[2inf])fread从文件中读入二进制数据,并按格式转换[A,count]=fread(fileID,size,precision,skip)precision:数据精度,skip:可选fwrite将数组A写入到文件句柄为fileID的文件中Count=fwrite(fileID,A,precision,skip)fgetl从文件句柄为fileID的文件中读入一行字符,不含换行符Linestring=fgetl(fileID)fgets从文件句柄为fileID的文件中读入一行字符,含换行符Linestring=fgets(fileID)frewind重置文件指针到文件头frewind(fileID)fseek将文件指针指向指定位置Status=fseek(fileID,offset,origin)origin:bof—文件首,cof—当前位置,eof—文件尾offset:偏移量ftell返回文件指针位置Position=ftell(fileID)表2-6文件读写函数名称含义名称含义min最小值max最大值mean平均值median中位数std标准差diff相邻元素的差sort排序char将数值转换为字符14any测试所有元素是否都是0sum总和cumsum累计元素总和cumprod累计元素总乘积double将字符转换为双精度数值blanks创建一个空白的字符串deblank删除字符串尾的空格upper将字符串转换成大写lower将字符串转换成小写all测试所有元素是否都非0表2-7其他函数名称含义用法size取得矩阵规模B=size(A)cross外积C=cross(A,B),即实现运算C=AΧBdot内积prod总乘积linespace建立线性等距分布数组linespace(初值,终值,元素个数)logspace建立对数等距分布数组logspace(初值,终值,元素个数)zeros创建元素全为0的矩阵zeros(N):创建一个NΧN的0矩阵;zeros(M,N):创建一个MΧN的0矩阵;zeros(M,N,P):创建一个MΧNΧP的0矩阵;zeros(size(A)):创建一个与A同规模的0矩阵;ones创建元素全为1的矩阵格式与zeros相同find搜索满足条件的元素下标函数find(条件)例如:B=find(A10)length数组中最大维数length(数组名),等效于max(size(数组名))eval计算字符表达式的值eval(表达式),例:B=eval(‘3+4/5’)diary保存文件日志diaryon;diaryoff;diary文件名det方阵行列式的值B=det(A)eig方阵的特征值和特征向量B=eig(A)eye单位矩阵A=eye(m,n)。产生mΧn规模的单位矩阵randn正态分布随机矩阵A=randn(m,n)diag产生对角阵B=diag(A)如A是矩阵,取对角元素产生列向量;如A是向量,则产生取对角矩阵;input从键盘读取信息A=input(字符串)表2-8其他常用函数及用法2.2MATLAB控制流MATLAB有顺序、循环和分支三种基本程序结构。2.2.1for循环for循环允许一组命令以固定的和预定的次数重复,for循环的一般形式是:forvar=expression15{commands}end在for和end语句之间的{commands}按数组中的每一列执行一次。例如,运行以下语句:forn=1:10x(n)=sin(n*pi/10);endx运行结果:x=Columns1through70.30900.58780.80900.95111.00000.95110.8090Columns8through100.58780.30900.0000for循环可以嵌套,格式是:forvar1=expression{commands1}forvar2=expression{commands2}endend2.2.2while循环while循环以不定的次数求一组语句的值,格式如下:whileexpression{commands}end只要表达式为真,就执行while和end语句之间的{commands}。例子:count=0;EPS=1;while(1+EPS)1EPS=EPS/2;count=count+1;enddisp(‘count=’);count运行结果:count=532.2.3if-else-end结构很多情况下,命令需要有条件地执行,可由if-else-end结构来实现,最简单的if-else-end结构是:ifexpression{commands}end如果在表达式中
本文标题:第2章MATLAB基本语法
链接地址:https://www.777doc.com/doc-3402761 .html