1、 0 0 0 1思考题:1 量名如何声明,变量名必须遵守什么规则、是否区分大小写答;(1)变量声明:不需要声明 (2)变量名须遵守的规则: 1变量名必须以字母开头,且只能由字母、数字或下划线3类符号组成,不能含有空格和标点符号(如(),。%)等;2变量名区分字母的大小写; 3变量名必须是不含空格的单个词;4关键字(如if、while)不能作为变量名。 (3)需要区分大小写试说明分号、逗号、冒号的用法。(1)分号:在语句最后加分号可使命令或语句的运行结果不显示在屏幕上,矩阵的行与行之间用分号; (2)逗号:一条命令行可以输入若干条命令,各命令之间以逗号或者分号分隔 (3)冒号:利用冒号生成向量。
2、用于生成一维数值数组,表示一维数组的全部元素或多维数组的某一维的全部元素。 linspace( )称为“线性等分”函数,说明它的用法。可使用help命令,格式如下: help linspace说明函数ones()、zeros()、eye()的用法。(1)ones()函数:全部元素都为1的常数矩阵; (2)zeros()函数:全部元素都为0的矩阵; (3)eye()函数:单位矩阵; (4)linspace()函数:如a=linspace(n1,n2,n3),表示在线性空 间上,行矢量的值从n1到n2 (2)工作空间窗口(Workspace)单击工作窗口右上角的按钮,将其从MATLAB主界面分出来
3、。在工作空间查看各个变量,或在命令窗口用who,whos(注意大小写)查看各个变量。在工作空间双击变量,弹出Array Editor 窗口(数据编辑器窗口),即可修改变量。使用save命令把工作空间的全部变量保存为my_var.mat文件。save my_var.mat输入下列命令 clear all %清除工作空间的所有的变量。观察工作空间的变量是否被清空,使用load命令把刚才保存的变量载入工作空间。 load my_var.mat清除命令窗口命令: clc(3)历史命令窗口打开历史命令窗口可以看到每次运行MATLAB的时间和曾在命令窗口输入过的命令,练习以下几种利用历史命令窗口重复执行输
4、入过的命令的方法。在历史命令窗口选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择copy然后再paste到命令窗口。在历史命令窗口双击要重复执行的一行,或者选中要重复执行的一行或几行命令,用鼠标将其拖到命令窗口中执行。在历史命令窗口选中要重复执行的一行或几行命令,右击,出现快捷菜单,选择Evaulate Selection,也可以执行。或者在命令窗口使用方向键的上下键得到以前输入的命令,使用方向键的左右键可以移动光标。(4)、当前目录命令窗口MATLAB的当前目录即是系统默认的实施打开,装载,编辑和保存文件等操作时的文件夹。(5)帮助窗口单击工具栏的?图标,或选择菜单ViewHelp,
5、或者选择菜单helpMATLAB Help都能启动帮助窗口。 通过Index选项卡查找log2() 函数的用法,在Search index for栏中输入需要查找的词汇“ log2”,在左下侧就列出与之最匹配的词汇条目,选择“ log21”,右侧的窗口就会显示相应的内容。 也可以通过Search选项卡查找log2()函数的用法。Search选项卡与 Index 选项卡不同,Index只在专用术语表中查找,而 Search搜素的是整个 HTML帮助文件。2.MATLAB的数值显示格式设置频幕显示方式有紧凑(compact)和松散(loose)两种其中loose为默认方式。 a=ones(1,30
6、) format compact a数字显示格式有short、long、short e、long e等,参照教材的列表练习。 format long pi format short format + -pi3.变量的搜索顺序 sin(pi); exist(pi) pi=0; clear pi3次执行的结果exist(pi)的结果一样吗?如果不一样,试解释为什么?圆周率pi是系统的默认常量,为什么会被改变为0?实验二 MATAB语言基础基本掌握MATLAB向量、矩阵、数组、的生成及其基本运算(区别数组运算和矩阵运算)、常用的数学函数。了解字符串的操作。二、实验内容(1)向量的生成和运算。(2)矩
7、阵的创建、引用和运算。(3)多维数组的创建和运算。(4)字符串的操作。1向量的生成和运算1)向量的生成直接输入法: A=2,3,4,5,6 %生成行向量 B=1;2;3;4;5; %生成列向量冒号表达输入法: A=1:10,B=1:10,C=10:-1:1函数法Linspace()是线性等分函数,logspace()是对数等分函数。 A=linspace(1,10),B=linspace(1,30,10) A=logspace(0,4,5)练习:使用logspace()创建14的有10个元素的行向量。2)向量的运算维数相同的行向量之间可以相加减,维数相同的列向量之间也可以相加减,标量可以与向量
8、相乘出。 A=1 2 3 4 5,B=3:7, AT=A,BT=B, E1=A+B,E2=A-B F=AT-BT, G1=3*A,G2=B/3,向量的点积与叉积的运算。 A=ones(1,10);B=(1:10);BT=B; E1=dot(A,B) E2=A*BT clear3,B=3:5, E=cross(A,B)2.矩阵的创建、引用和运算1)矩阵的创建和引用矩阵是由mn元素构成的矩形结构,行向量和列向量是矩阵的特殊情况形式。 A=1 2 3;4 5 6 B=1 4 7 2 5 83 6 9 A(1) A(4:end) B(:,1) B(5)抽取法: A=1 2 3 4;5 6 7 8;9
9、10 11 12;13 14 15 16 B=A(1:3,2:3) C=A(1 3,2 4) D=A(1 3;2 4)函数法: A=ones(3,4) B=zeros(3) C=eye(3,2) D=magic(3)拼接法: C=eye(4) D=A B F=A;C拼接函数和变形函数法: A=0 1;1 1 B=2*ones(2) cat(1,A,B,A) cat(2,A,B,A) repmat(A,2,2) repmat(A,2)使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:A为34的全1矩阵、B为33的0矩阵、C为33的单位矩阵、D为33的魔方阵、E由C和D纵向拼接而成
10、、F抽取E的25行元素生成、G由F经变形为34的矩阵而得、以G为子矩阵用复制函数(repmat)生成68的大矩阵H。2)矩阵的运算矩阵加减、数乘和乘法已知矩阵: A=1 2;3 -1,B=-1 0;1 2求 A+B,2A,2A-3B,4B矩阵的逆矩阵 format rat;A=1 0 1;2 1 2;0 4 6 A1=inv(A) A*A1矩阵的除法 a=1 2 1;3 1 4;2 2 1,b=1 1 2,d=b c1=b*inv(a),c2=b/a c3=inv(a)*d,c4=ad观察结果C1是否等于C2,C3是否等于C4?如何取出记忆左除和右除?斜杠向左边倾斜就是左除,向右边倾斜就是右除
11、。左除就是左边的数或矩阵作分母,右除就是右边的数或矩阵作分母。用矩阵除法求下列方程组的解x=x1;x2;x3;3.多维数组的创建及运算1)多维数组的创建 A1=1,2,3;4,5,6;7,8,9;A2=reshape(10:18,3,3) T1(:,:,1)=ones(3);T1(:,2)=zeros(3) T2=ones(3,3,2) T3=cat(3,A1,A2),T4=repmat(A1,1,1,2)2)多维数组的运算数组运算用小圆点加在运算符的前面表示,以区别矩阵的运算。特点是两个数组相对应的元素进行运算。 A=1:6;B=ones(1,6); C1=A+B,C2=A-B C3=A.*
12、B,C4=B./A,C5=A.B关系运算或逻辑运算的结果都是逻辑值。 I=A3,C6=A(I) A1=A-3,I2=A1&A I3=I创建三维数组A,第一页为,第二页为,第三页为,然后用rashape函数重排为数组B,B为3行、2列、2页。4.字符串的操作1)字符串的创建 S1=I like MATLAB S2=Im a student. %注意这里用两个连续的单引号输出一个单引号 S3=S2,adn,S12)求字符串长度 length(S1) size(S1)3)字符串与一维数组数值数组的相互转换 CS1=abs(S1) CS2=double(S1) char(CS2) setstr(CS2
13、)用char()和向量生成的办法创建如下字符串AaBbCcXxYyZz提示:A和a的ASC码分别是65,97实验三 MALTAB数值运算掌握MATLAB的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作。1) 多项式运算。2) 多项式插值和拟合。3) 数值为积分。4) 结构数组和细胞数组。1、多项式运算1) 多项式表示。在MATLAB中,多项式表示成向量的形式。如: 在MATLAB中表示为 s=1 3 -5 0 92) 多项式的加减法相当于向量的加减法,但必须注意阶次要相同。如不同,低阶次的要补0。如多项式与多项式相加。 s1=0 0 2 3 11 s2=1 2 -5 4 7 s3
14、=s1+s23) 多项式的乘、除法分别用函数conv和的deconv实现。 s1=2 3 11 s2=1 3 -5 4 7 s3=conv(s1,s2) s4=deconv(s3,s1)4) 多项式求根用函数roots。 s1=2 4 2 roots(s1)5) 多项式求值用函数polyval s1=2 4 1 -3 polyval(s1,3) x=1:10 y=polyval(s1,x)求的“商”及余数。 s1=1 0 1;s2=1 3;s3=1 1; s4=1 0 2 1; q,r=deconv(conv(conv(s1,s2),s3),s4)2、多项式插值和拟合有一组实验数据如附表1-1
15、所示。附表1-1X23456789Y163270142260436682101014321960分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估算X=9.5时Y的值。以下是实现一阶拟合的语句。 y=16 32 70 142 260 436 682 1010 1342 1960 p1=polyfit(x,y,1) %一阶拟合 y1=polyval(p1,9.5) %计算多项式P1在x=9.5的值3、数值微积分1) 差分使用diff函数实现。 diff(x)2) 可以用因变量和自变量差分的结果相处得到数值微分。 x=linspace(0,2*pi,100); y=sin(x); plot
16、(x,y) y1=diff(y)./diff(x); plot(x(1:end-1),y1)3) cumsum函数求累计积分,trapz函数用梯形法求定积分,即曲线的面积。 x=ones(1,10) cumsum(x) x=linspace(0,pi,100); trapz(x,y) p=cumsum(y); p(100)*pi/(100-1)练习:图A1是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为X轴,由南向北方向为Y轴,选择方便的原点,并将从最西边界点到最东边界点在X轴上的区间适当划分为若干段,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,这样就得到
17、表1,根据地图比例尺回到18mm相当于40Km,试由测量数据计算瑞士国土近似面积,与其精确值41228比较。地图的数据见附表1-2(单位mm)。附表1-210.51317.53440.544.548566168.576.580.591Y1444547503830364146Y2597293100110117118116续表96101104106.5111.5123.5136.5146150157158433733286555545266681211241228381828685由高等数学的知识,一条曲线的定积分是它与x轴所围成的面积,那么两条曲线所围成的面积可由两条曲线的定积分相减得到。4、结
18、构数组与细胞数组1) 机构数组的创建。 student.number=20050731001 student.name=Jack student(2).number=20050731002 student(2).name=Lucy student或者用struct函数创建。 student=struct(number,001,002,name);2) 机构数组的操作。 student(1).subject= %添加subject域并赋予空值 student(1).score= filednames(studeng)fieldnames(studeng)fieldnames(student) g
19、etfield(student,2, student=rmfield(student,subject) %删除subject域 student=setfield(student,1,score,90); student(2).score=88; %比较和上一条语句是否效果一样创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组的大小为22。3) 细胞数组的创建。 A=How are you!,ones(3);1 2;3 4,cell; %直接创建 B(1,1)=Hello world; %由各个细胞元素创建 B(
20、1,2)=magic(3); B(2,1)=1 2 3 4;或者用cell函数先创建空的细胞数组,然后再给各个元素赋值c=cell(1,2); c(1,1)= c(1,2)=magic(3); c(1,3)=1 2 3 4;4) 细胞数组的操作。 ans1=A(1,1) ans2=A(1,1) whos ans1 ans2 celldisp(A) a1=A2,1(1,2) a2 a3=deal(A1:2)实验四 MALTAB符号运算 掌握符号变量和符号表达式的创建,掌握MALTAB的symbol工具箱的一些基本运用。1) 符号变量、表达式、方程及函数的表示。2) 符号微积分运算。3) 符号表达
21、式的操作和转换。4) 符号微分方程求解。1、符号运算的引入 在数值运算中如果求,则可以不断让的让x趋近0,一球的表达式趋近什么数,但终究不能令x=0,因为在数值运算中0不是能作除数的。MATLAB的符号运算能解决这内问题。输入如下命令: f=sym(sin(pi*x)/x limit(f,x,0)2、符号常量、符号变量、符号表达式的创建1) 使用sym()创建输入以下命令,观察Workspace中A、B、f是什么内性的数据,占用多少字节的内存空间。 A=sym(1) %符号常量 B=sym() %符号变量2*x2+3*x-1) %符号表达式 f1=sym(1+2) %有单引号,表示字符串 f2
22、=sym(1+2) %无单引号 f2=sym(1+2) f4=sym(2*x+3) %为什么出错 x=1 f4=sym(2*x+3)通过看MATLAB的帮助可知,sym()的参数可以使字符串或是数值类型,无论是哪种类型都会生成符号类型数据。2) 使用syms创建 syms x y z x,y,z f1=x2+2*x+1 f2=exp(y)+exp(z)2 f3=f1+f23、符号矩阵创建 syms a1 a2 a3 a4 A=a1 a2;a3 a4 A(1),A(3)4、符号算术运算1) 符号向量相乘、相除符号量相成和数值量相乘一样,分成矩阵乘和数组乘。 a=sym(5);b=sym(7); c1=a*b c2=a/bB=sym(3 4 5); C1=a*B,C2=aB syms a b A=5 a;b 3;B=2*a b;2*b a; C1=A*B,C2=A.*B C3=AB,C4=A./B2) 符号数值任意精度控制和运算任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的精度进行计算)来实现。 a1=sym(2*sqrt(5)+pi a=sym( b=sym(2*sqrt(5)+pi) di
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1