matlab 第二讲.ppt

上传人:hyn****60 文档编号:88429018 上传时间:2023-04-26 格式:PPT 页数:160 大小:1.31MB
返回 下载 相关 举报
matlab 第二讲.ppt_第1页
第1页 / 共160页
matlab 第二讲.ppt_第2页
第2页 / 共160页
点击查看更多>>
资源描述

《matlab 第二讲.ppt》由会员分享,可在线阅读,更多相关《matlab 第二讲.ppt(160页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、q 字符串和字符数组字符串和字符数组n 字符串必须用字符串必须用单引号单引号括起来括起来n 字符串是由多个字符组成的字符串是由多个字符组成的字符行向量字符行向量字符与字符串字符与字符串q 字符与字符串运算是各种高级语言不可缺少的字符与字符串运算是各种高级语言不可缺少的部分,部分,Matlab具有强大的字符处理能力。具有强大的字符处理能力。str1=Matrix Laboratorystr2=M,a,t,r,i,xn 字符数组必须是方的,即每行的字符个数必须相等字符数组必须是方的,即每行的字符个数必须相等str3=M,a,t;r,i,xq 字符串中的每个字符(包括空格)都是字符串的一个元素字符串

2、中的每个字符(包括空格)都是字符串的一个元素字符与字符串字符与字符串str=Matrix;str(3)size(str)str=Matrix;double(str(3);double(str);q Matlab中字符是以中字符是以 ASCII 码存储的,因而码存储的,因而区分大小写区分大小写,可,可用用 double 函数查看一个字符的函数查看一个字符的 ASCII 码码q 使用使用 char 函数函数ASCII 码码 字符串字符串字符串的生成字符串的生成q 直接赋值直接赋值str1=Matrix;str2=Laboratory;str=str1,str2;str=char(77,97,116

3、,108,97,98)str=char(str1,str2)l 生成一个字符数组,第一行为生成一个字符数组,第一行为 str1,第二行为,第二行为 str2l 数值矩阵到字符数组:数值矩阵到字符数组:num2str、int2str、mat2strl 字符数组到数值数组:字符数组到数值数组:str2num字符串与数值数组字符串与数值数组q 字符串、字符数组与数值数组之间的转换字符串、字符数组与数值数组之间的转换u 按按 ASCII 码转换码转换l 字符数组到数值数组:字符数组到数值数组:doublel 数值数组到字符串:数值数组到字符串:charu 直接将转换数值数组转换成字符数组直接将转换数值

4、数组转换成字符数组举例举例a=97,97.3;97.8,98;str1=char(a);str2=num2str(a);str3=int2str(a);str4=mat2str(a);l char 的输入参数范围为的输入参数范围为 0,65535,当输入参数中有,当输入参数中有小数时,直接将小数部分舍去。小数时,直接将小数部分舍去。l num2str 直接将每个数字转换成字符直接将每个数字转换成字符l mat2str 把整个矩阵转换成字符把整个矩阵转换成字符行向量行向量,包括矩阵,包括矩阵中的中的方括号方括号、空格空格 和和 分号分号(逗号自动去除)(逗号自动去除)举例举例str5=mat2s

5、tr(97,97.3;97.8,98);l 数值数组转换为字符数组后,表面上看数值数组转换为字符数组后,表面上看象一个数值数象一个数值数组组,但此时的元素是字符而不是数字!,但此时的元素是字符而不是数字!a=1,2,3b=num2str(a)c=2*ad=2*be=2*str2num(b)double、char 是按是按 ASCII码码 进行转换进行转换num2str、int2str、mat2str、str2num 是直接进行转换是直接进行转换字符串的合并字符串的合并q 水平水平合并合并u 直接使用中括号直接使用中括号u 使用使用 strcat 函数函数 str1=hello,world!st

6、r2=strcat(hello,world!)l 使用使用 strcat 时,自动去除时,自动去除原字符串原字符串结尾处的空格结尾处的空格l 水平水平合并合并得到的是一个更长的字符串得到的是一个更长的字符串 字符串的合并字符串的合并q 垂直垂直合并合并u 直接使用中括号直接使用中括号u 使用使用 strvcat 函数函数 str3=Matrix ;Laboratorystr4=strvcat(Matrix,Laboratory)l 在中括号中用在中括号中用分号分号实现垂直实现垂直合并合并,必须保证每个字符,必须保证每个字符串串的的长度相等,否则需用空格补齐长度相等,否则需用空格补齐l 用用 s

7、trvcat 合并合并,自动为较短的字符串,自动为较短的字符串补充补充空格空格l 垂直合并垂直合并得到的是一个字符得到的是一个字符数组数组 运行字符串运行字符串q 运行字符串所表示的表达式或命令:运行字符串所表示的表达式或命令:evalstr=1+2;a=eval(str)str=A=magic(3);eval(str)str1=figure(1);mesh(peaks(60);str2=figure(2);waterfall(peaks(60);eval(str1)eval(str2)函 数功 能函 数功 能strcmp比较字符串strrep替换字符串strcmpi忽略大小写比较字符串str

8、ncmp比较字符串的前n个字符upper转换为大写lower转换为小写blanks产生空字符串deblank删除字符串中的空格strmatch查找匹配的字符串findstr在一个字符串中查找另一字符串strjust对齐字符数组,包括左对齐,右对齐和居中strtok返回字符串中第一个分隔符(空格,回车和Tab键)前的部分字符串相关函数字符串相关函数q Matlab 作图作图Matlab 绘图绘图u 给出离散点列:给出离散点列:x=0:pi/10:2*piu 计算函数值:计算函数值:y=sin(x)u 画图:用画图:用 matlab 二维绘图命令二维绘图命令 plot 作出函数图形作出函数图形 p

9、lot(x,y)例例:x=0:pi/10:2*pi;y=sin(x);plot(x,y);Matlab 二维作图二维作图u plot(x,y)q 基本形式基本形式 x,y 都是向量,则以都是向量,则以 x 中元素为横坐标,中元素为横坐标,y 中元素为中元素为纵坐标作平面曲线。此时纵坐标作平面曲线。此时 x,y 必须具有必须具有相同长度相同长度。x,y 都是矩阵,则将都是矩阵,则将 x 的列和的列和 y 中相应的列相组合,中相应的列相组合,绘制多条平面曲线。此时绘制多条平面曲线。此时 x,y 必须具有必须具有相同的大小相同的大小。x 是向量是向量,y 是矩阵,若是矩阵,若 x 的长度与的长度与

10、y 的行数相等,的行数相等,则将则将 x 与与 y 中的各列相对应,绘制多条平面曲线;否中的各列相对应,绘制多条平面曲线;否则,若则,若 x 的长度与的长度与 y 的列数相等,则将的列数相等,则将 x 与与 y 中的各中的各行相对应,绘制多条平面曲线。此时行相对应,绘制多条平面曲线。此时 x 的长度必须等的长度必须等于于 y 的行数或列数的行数或列数。plot 举例举例 x=0:0.1:4*pi;y=cos(x);plot(x,y);例例:y=cos(x)在在 0,4*pi 上的图像上的图像自己动手指出以下各个绘图命令的输出图形分别是什么,并上机验证指出以下各个绘图命令的输出图形分别是什么,并

11、上机验证 t=0 1;x=1 2;y=x;3 4;z=y;5 6;plot(t,x);plot(t,y);plot(t,y);plot(t,z);plot(t,z);Matlab 二维作图二维作图u plot(y):绘制绘制向量向量 y 中中元素的线性图元素的线性图q 基本形式基本形式(续)(续)例例:y=0,0.48,0.84,1,0.91,6.14;plot(y);figure(2);plot(1:length(y),y)自己动手x=1:length(y);plot(x,y);以下标为横坐标,元素值为纵坐标,以下标为横坐标,元素值为纵坐标,等价于:等价于:plot(Y):当当 Y 是矩阵时

12、的图形是什么?是矩阵时的图形是什么?Y=1 2;3 5;6 9;plot(Y);plot(Y);q 点和线的基本属性点和线的基本属性图形的属性图形的属性u plot(x,y,string)其中其中 string 是用是用 单引号单引号 括起来的字符串,用来指定图括起来的字符串,用来指定图形的属性形的属性(点、线的形状和颜色)(点、线的形状和颜色)属性可以全部指定,也属性可以全部指定,也可以只指定其中某几个可以只指定其中某几个排列顺序任意排列顺序任意红色、虚线、红色、虚线、离散点用加号离散点用加号蓝色、点划线蓝色、点划线离散点为菱形离散点为菱形黑色、实线黑色、实线离散点用星号离散点用星号 x=0

13、:0.2:2*pi;plot(x,cos(x);plot(x,cos(x),r+:);plot(x,cos(x),bd-.);plot(x,cos(x),k*-);图形的基本属性图形的基本属性线型线型点标记点标记颜色颜色-实线实线:虚线虚线-.-.点划线点划线-间断线间断线.点点o o 小圆圈小圆圈x x 叉子符叉子符+加号加号*星号星号s s 方格方格d d 菱形菱形 朝上三角朝上三角v v 朝下三角朝下三角 朝右三角朝右三角 legend(cos(x);text(pi/2,cos(pi/2),leftarrowy=cos(x);xlable,ylabel,text 命令也可以指定文本的属性

14、其他相关命令其他相关命令u 保持当前窗口的图像hold on 或或 hold offu 新建绘图窗口figure(n)u 显示网格grid on 或或 grid off其他相关命令其他相关命令u 划分绘图区域subplot(m,n,p)怎样在一个怎样在一个绘图区域绘图区域内绘制多个函数的图像内绘制多个函数的图像?将一个绘图窗口分割成将一个绘图窗口分割成 m*n 个子区域,并个子区域,并 按行按行 从左至从左至右右 依次编号依次编号。p 表示第表示第 p 个绘图子区域。个绘图子区域。x=-pi:pi/10:pi;subplot(2,2,1);plot(x,sin(x);subplot(2,2,2

15、);plot(x,cos(x);subplot(2,2,3);plot(x,x.2);subplot(2,2,4);plot(x,exp(x);例例:同时绘制多个函数图像同时绘制多个函数图像u plot(x1,y1,s1,x2,y2,s2,.,xn,yn,sn)属性选项属性选项可以省略可以省略等价于:等价于:hold onplot(x1,y1,s1)plot(x2,y2,s2).plot(xn,yn,sn)图形的其他属性图形的其他属性 x=-pi:pi/10:pi;y=sin(x);plot(x,y,rh:,linewidth,2,.markeredgecolor,b,.markerfacec

16、olor,g)例例:q 线条的粗细,字体大小,坐标轴属性等。linewidth:指定线条的粗细指定线条的粗细markeredgecolor:指定标记的边缘色指定标记的边缘色markerfacecolor:指定标记表面的颜色指定标记表面的颜色注:注:1)属性与属性的值是成对出现的属性与属性的值是成对出现的 2)更多属性参见更多属性参见 plot 的联机帮助的联机帮助空间三维作图空间三维作图q 三维曲线:plot3设三维曲线的参数方程为:x=x(t),y=y(t),z=z(t),则其图形可由下面的命令绘出:例:例:三维螺旋线三维螺旋线plot3的用法与的用法与 plot 类似类似 t=0:0.1:

17、10*pi;x=2*t;y=sin(t);z=cos(t);plot3(x,y,z);plot3(x,y,z,s)空间三维作图空间三维作图q 空间曲面 空间三维作图空间三维作图q 空间曲面 mesh(Z)绘出矩阵绘出矩阵 Z 的三维消隐图。的三维消隐图。mesh(x,y,Z)x,y 是向量时,是向量时,length(x)=n,length(y)=m,m,n=size(Z)mesh(X,Y,Z,C)绘制由矩阵绘制由矩阵 X,Y,Z 所确定的曲面所确定的曲面网格图网格图,矩阵矩阵 C 用于确定网格颜色,省略时用于确定网格颜色,省略时 C=Z。mesh,meshc,meshzmeshc调用方式与调用

18、方式与 mesh 相同,在相同,在 mesh 基础上增加等高线基础上增加等高线meshz调用方式与调用方式与 mesh 相同,在相同,在 mesh 基础上屏蔽边界面基础上屏蔽边界面空间三维作图空间三维作图u 网格生成函数:meshgridx,y 为给定的向量,为给定的向量,X,Y 是网格划分后得到的网格矩阵是网格划分后得到的网格矩阵u 绘制由函数 z=z(x,y)确定的曲面时,首先需产生一个网格矩阵,然后计算函数在各网格点上的值。若 x=y,则可简写为 X,Y=meshgrid(x)X,Y=meshgrid(x,y)x=-8:0.5:8;y=-8:0.5:8;X,Y=meshgrid(x,y)

19、;r=sqrt(X.2+Y.2)+eps;Z=sin(r)./r;mesh(X,Y,Z)例:空间三维作图空间三维作图q 空间曲面其它作图函数 u sphere(n)专用于绘制单位球面专用于绘制单位球面mesh 绘制网格图,surf 绘制着色的三维表面图u surf(X,Y,Z)绘制由矩阵绘制由矩阵 X,Y,Z 所确定的曲面图,参数所确定的曲面图,参数含义同含义同 meshsphere 只能画单位球面!只能画单位球面!自己动手绘制球面绘制球面 x2+y2+z2=16surf 作图举例作图举例 X,Y=meshgrid(-8:0.5:8);r=sqrt(X.2+Y.2)+eps;Z=sin(r).

20、/r;surf(X,Y,Z)mesh 与与 surf 的比较的比较u ezplot(f)Matlab 符号作图符号作图q 二维曲线绘图:ezplotu ezplot(f,a,b)u ezplot(f(x,y)u ezplot(f(x,y),a,b,c,d)u ezplot(f,g,a,b)缺省的绘图区间为缺省的绘图区间为-2,2 例:ezplot 作图作图Matlab 符号作图符号作图q 空间曲线绘图:ezplot3缺省的绘图区间为缺省的绘图区间为 0,2 u ezplot3(x,y,z,a,b)u ezplot3(x,y,z)Matlab 符号作图符号作图q 空间曲面绘图:ezmesh、ez

21、surfu ezmesh(z(x,y),a,b,c,d)u ezmesh(z(x,y),a,b)u ezmesh(z(x,y)u ezmesh(x(s,t),y(s,t),z(s,t),a,b,c,d)u ezmesh(x(s,t),y(s,t),z(s,t),a,b)u ezmesh(x(s,t),y(s,t),z(s,t)ezsurf 的用法与 ezmesh 相同q 细胞变量的表示方法类似于带有下标的数组,但细胞变量的表示方法类似于带有下标的数组,但这些下标不是用圆括号括起来,而是使用这些下标不是用圆括号括起来,而是使用大括号大括号。q 普通数组中的每个元素都必须具有相同的数据类普通数组中

22、的每个元素都必须具有相同的数据类型,而细胞则没有此要求。型,而细胞则没有此要求。细胞数组细胞数组q Matlab 从从 5.0 版开始引入了一种新的数据类型版开始引入了一种新的数据类型 细胞细胞(cell),该结构可以该结构可以把不同类型的数据纳入把不同类型的数据纳入到一个变量到一个变量中。中。细胞数组举例细胞数组举例u 用赋值语句直接定义用赋值语句直接定义 u 用用 cell 函数预先分配存储空间,然后对细胞的每个函数预先分配存储空间,然后对细胞的每个元素逐个赋值。元素逐个赋值。细胞变量的定义细胞变量的定义A=1 2;3 4;str=Matlab;M=1:4,A,str;celldisp(M

23、)cell(m,n)l 生成一个生成一个 m 行行 n 列列 的细胞数组。的细胞数组。q 可以通过以下两种方式定义一个细胞变量可以通过以下两种方式定义一个细胞变量举例举例A=1 2;3 4;str=Matlab;M=1:4,A,str;N=hello,M;celldisp(N);A=1 2;3 4;str=Matlab;M=cell(1,3);M1,1=1:4;M1,2=A;M1,3=str;celldisp(M)细胞变量元素的引用细胞变量元素的引用A=1 2;3 4;str=Matlab;M=1:4,A,str;N=hello,M;eye(2),magic(3);N1,1N1,2N1,21,

24、2N1,21,2(2,1)l 细胞变量的引用必须使用细胞变量的引用必须使用大括号大括号。相关函数相关函数celldispl 输出细胞变量的内容。输出细胞变量的内容。cellplotl 用图形方式显示细胞变量的内容。用图形方式显示细胞变量的内容。iscelll 判别一个变量是否为细胞变量。判别一个变量是否为细胞变量。举例举例A=1 2;3 4;str=Matlab;M=1:4,A,str;celldisp(M);cellplot(M);iscell(A)iscell(M)稀疏矩阵介绍稀疏矩阵介绍v 稀疏矩阵稀疏矩阵q 对对于于一一个个 n 阶阶矩矩阵阵,通通常常需需要要 n2 的的存存储储空空间

25、间,当当 n 很很大大时,进行矩阵运算时会占用大量的内存空间和运算时间。时,进行矩阵运算时会占用大量的内存空间和运算时间。q Matlab支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵支持稀疏矩阵,只存储矩阵的非零元素,这在矩阵的存储空间和计算时间上都有很大的优点。的存储空间和计算时间上都有很大的优点。q 在在许许多多实实际际问问题题中中遇遇到到的的大大规规模模矩矩阵阵中中通通常常含含有有大大量量0元元素,这样的矩阵称为素,这样的矩阵称为稀疏矩阵稀疏矩阵。q 稀稀疏疏矩矩阵阵及及其其算算法法,就就是是不不存存储储那那些些“0”元元素素,也也不不对对它它们们进进行行操操作作,从从而而节节省省内内存

26、存空空间间和和计计算算时时间间;稀稀疏疏矩矩阵阵计计算算的复杂性和代价仅仅取决于稀疏矩阵的的复杂性和代价仅仅取决于稀疏矩阵的非零元素的个数非零元素的个数。稀疏矩阵介绍稀疏矩阵介绍v 稀疏矩阵的存储稀疏矩阵的存储q 在在Matlab中中有有两两种种存存储储矩矩阵阵的的方方式式:全全元元素素存存储储(满满矩矩阵)和稀疏存储(稀疏矩阵)。阵)和稀疏存储(稀疏矩阵)。q 设一个稀疏矩阵有设一个稀疏矩阵有 nnz 个非零元素,个非零元素,Matlab需要需要三个数三个数组组存储实型的稀疏矩阵,第一个数组存储所有的非零元素,存储实型的稀疏矩阵,第一个数组存储所有的非零元素,这个数组的长度为这个数组的长度为

27、 nnz,第二个数组存储非零元素所对应第二个数组存储非零元素所对应的行标,长度也是的行标,长度也是 nnz,第三个数组存储指向每一列开始第三个数组存储指向每一列开始的指针,这个数组的长度为的指针,这个数组的长度为 n。q 稀疏存储:稀疏存储:Matlab仅存储那些非零元素及其下标。仅存储那些非零元素及其下标。稀疏矩阵介绍稀疏矩阵介绍v 创建稀疏矩阵创建稀疏矩阵q 稀稀疏疏矩矩阵阵的的创创建建需需要要用用户户来来决决定定。用用户户需需要要判判断断在在矩矩阵阵中是否有大量的零元素,是否需要采用稀疏存储技术。中是否有大量的零元素,是否需要采用稀疏存储技术。q 矩阵的矩阵的密度密度定义为矩阵中非零元素

28、的个数除以矩阵中总定义为矩阵中非零元素的个数除以矩阵中总的元素个数。对于低密度的矩阵,采用稀疏方式存储是一的元素个数。对于低密度的矩阵,采用稀疏方式存储是一种很好的选择。种很好的选择。q 如如果果某某个个矩矩阵阵以以稀稀疏疏方方式式存存储储,则则它它参参与与运运算算的的结结果果也也将将以稀疏方式存储,除非运算本身是稀疏性消失。以稀疏方式存储,除非运算本身是稀疏性消失。稀疏矩阵介绍稀疏矩阵介绍q 满矩阵与稀疏矩阵之间的转化满矩阵与稀疏矩阵之间的转化例:例:S=sparse(A)A=full(S)A=0 0 5 0;3 0 3 0;0 0 0 1;0 4 3 0S=sparse(A)whos稀疏矩

29、阵介绍稀疏矩阵介绍q 直接创建稀疏矩阵直接创建稀疏矩阵例:例:S=sparse(i,j,s,m,n)其中其中i 和和j 分别是矩阵非零元素的分别是矩阵非零元素的行和列指标行和列指标向量,向量,s 是非是非零元素值零元素值向量,向量,m,n 分别是矩阵的行数和列数。分别是矩阵的行数和列数。S2=sparse(1 2 2 3 4 4,3 1 3 4 2 3,.5 3 3 1 4 3,4,4)稀疏矩阵介绍稀疏矩阵介绍q 从文件中创建稀疏矩阵从文件中创建稀疏矩阵例:设文本文件例:设文本文件 T.txt 中有三列内容,第一列是一些行下标,中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素

30、值。第二列是列下标,第三列是非零元素值。1 3 52 1 32 3 33 4 14 2 44 3 3利用利用load和和spconvert函数可以从函数可以从包含一系列下标和非包含一系列下标和非零元素的文本文件零元素的文本文件中输入稀疏矩阵。中输入稀疏矩阵。load T.txtS=spconvert(T)稀疏矩阵介绍稀疏矩阵介绍q 稀疏对角矩阵的创建稀疏对角矩阵的创建S=spdiags(B,d,m,n)其中其中m 和和n 分别是矩阵的行数和列数;分别是矩阵的行数和列数;d是长度为是长度为p的整数向的整数向量,它指定矩阵量,它指定矩阵S的对角线位置;的对角线位置;B是全元素矩阵,用来给是全元素矩

31、阵,用来给定定S对角线位置上的元素,行数为对角线位置上的元素,行数为min(m,n),列数为列数为p。B=rand(4,2);S3=spdiags(B,0 1,4,4)q稀疏单位矩阵创建函数稀疏单位矩阵创建函数S=speye(m,n)S=speye(size(A)%has the same size as A稀疏矩阵介绍稀疏矩阵介绍v 稀疏矩阵的查看稀疏矩阵的查看q 通常的存储信息通常的存储信息q 非零元素信息。非零元素信息。whosnnz(S)%返回非零元素的个数返回非零元素的个数nonzeros(S)%返回列向量,包含所有的非零元素返回列向量,包含所有的非零元素nzmax(S)%返回分配给

32、稀疏矩阵中非零项的总的存储返回分配给稀疏矩阵中非零项的总的存储空间空间q 查看稀疏矩阵的形状查看稀疏矩阵的形状spy(S)稀疏矩阵介绍稀疏矩阵介绍q find函数与稀疏矩阵函数与稀疏矩阵i,j,s=find(S)i,j=find(S)返回返回 S 中所有非零元素的下标和数值,中所有非零元素的下标和数值,S 可以是稀疏矩阵或可以是稀疏矩阵或满矩阵。满矩阵。稀疏矩阵介绍稀疏矩阵介绍v 稀疏矩阵的运算稀疏矩阵的运算q Matlab中中对对满满矩矩阵阵的的运运算算和和函函数数同同样样可可用用在在稀稀疏疏矩矩阵阵中中。结结果果是是稀稀疏疏矩矩阵阵还还是是满满矩矩阵阵,取取决决于于运运算算符符或或者者函函

33、数数及及下下列几个原则:列几个原则:当函数用一个当函数用一个矩阵作为输入参数矩阵作为输入参数,输出输出参数为一个参数为一个标量标量或或者一个给定大小的者一个给定大小的向量向量时,输出参数的格式总是返回一个时,输出参数的格式总是返回一个满矩阵满矩阵形式,如命令形式,如命令 size size 等等。当函数用当函数用一个标量或者一个向量作为输入参数一个标量或者一个向量作为输入参数,输出输出参数参数为一个为一个矩阵矩阵时,输出参数的格式也总是返回一个时,输出参数的格式也总是返回一个满矩阵满矩阵,如命令如命令eyeeye,randrand等。还有一些特殊的命令可以得到稀疏矩等。还有一些特殊的命令可以得

34、到稀疏矩阵,如命令阵,如命令speyespeye,sprandsprand等。等。稀疏矩阵运算稀疏矩阵运算对于对于单参数单参数的其他函数来说,通常返回的的其他函数来说,通常返回的结果和参数的形结果和参数的形式是一样式是一样的,如的,如 diagdiag、max max 等等。(。(sparsesparse和和fullfull是例外)是例外)对于对于双参数双参数的运算或者函数来说,如果两个参数的形式一样,的运算或者函数来说,如果两个参数的形式一样,那么也返回同样形式的结果。在两个参数形式不一样的情况下,那么也返回同样形式的结果。在两个参数形式不一样的情况下,除非运算的需要,均以除非运算的需要,均

35、以满矩阵满矩阵的形式给出结果。的形式给出结果。例:例:A=eye(4);B=speye(4);S1=A+B;S2=A*B;S3=AB;S4=A.*B;whos稀疏矩阵运算稀疏矩阵运算在赋值语句的右侧的子矩阵索引保留参数的存储形式,即:在赋值语句的右侧的子矩阵索引保留参数的存储形式,即:对于对于 T=S(i,j),若若 S 是稀疏矩阵,是稀疏矩阵,i,j 是向量或标量,则是向量或标量,则T 也是稀疏矩阵。也是稀疏矩阵。例:例:A=eye(4);B=speye(4);i,j=find(A);S1=A(i,j);whosS1=B(i,j);whosA(i,j)=2*B(i,j);whosB(i,j)

36、=A(i,j)2;whos在赋值语句的左侧的子矩阵索引不会改变左侧矩阵的存储形在赋值语句的左侧的子矩阵索引不会改变左侧矩阵的存储形式。式。Matlab 符号运算符号运算q Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建立在功能强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时,它就请求 Maple 软件去计算并将结果返回给 Matlab。q Matlab 的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符

37、号代数方程求解,符号微分方程求解等。此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。q 在进行符号运算时,必须先定义基本的符号对象,可以是符号常量、符号变量、符号表达式等。符号对象是一种数据结构。符号对象与符号表达式符号对象与符号表达式q 含有符号对象的表达式称为符号表达式,Matlab 在内部把符号表达式表示成字符串,以与数字变量或运算相区别。q 符号矩阵/数组:元素为符号表达式的矩阵/数组。u sym 函数用来建立单个符号变量,一般调用格式为:q 符号对象的建立:sym 和 syms符号对象符号对象的建立的建立例:a=sym(a)符号变量=sym(A)参数 A 可以是一个数或

38、数值矩阵,也可以是字符串a 是符号变量b 是符号常量 b=sym(1/3)c 是符号矩阵 c=sym(1 ab;c d)q 符号对象的建立:sym 和 syms符号对象符号对象的建立的建立u syms 命令命令用来建立多个符号变量,一般调用格式为:syms 符号变量符号变量1 符号变量符号变量2.符号变量符号变量n 例:syms a b c a=sym(a);b=sym(b);c=sym(c);q 符号表达式的建立:例:建立符号表达式通常有以下2种方法:(1)用 sym 函数直接建立符号表达式。(2)使用已经定义的符号变量组成符号表达式。y=sym(sin(x)+cos(x)x=sym(x);

39、y=sin(x)+cos(x)符号符号表达式表达式的建立的建立Matlab 符号运算采用的运算符和基本函数,在形状、名称和使用上,都与数值计算中的运算符和基本函数完全相同符号对象符号对象的的基本基本运算运算q 基本运算符u 普通运算:+、-、*、/、u 数组运算:.*、.、./、.u 矩阵转置:、.例:X=sym(x11,x12;x21,x22;x31,x32);Y=sym(y11,y12,y13;y21,y22,y23);Z1=X*Y;Z2=X.*Y;符号对象符号对象的的基本基本运算运算sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc

40、、exp、log、log2、log10、sqrtabs、conj、real、imagrank、det、inv、eig、lu、qr、svddiag、triu、tril、expm三角函数与反三角函数、指数函数、对数函数等q 基本函数q 查找符号表达式中的符号变量若表达式中有两个符号变量与 x 的距离相等,则ASCII 码大者优先。查找符号变量查找符号变量findsym(expr)按字母顺序列出符号表达式 expr 中的所有符号变量findsym(expr,N)列出 expr 中离 x 最近的 N 个符号变量常量 pi,i,j 不作为符号变量例:f=sym(2*w-3*y+z2+5*a)findsy

41、m(f)f=sym(f,3)f=sym(f,1)findsym 举例举例符号表达式的替换符号表达式的替换subs(f,x,a)用用 a 替换字符函数替换字符函数 f 中的字符变量中的字符变量 x a 是可以是是可以是 数数/数值变量数值变量/表达式表达式 或或 字符变量字符变量/表达式表达式若 x 是一个由多个字符变量组成的数组或矩阵,则 a 应该具有与 x 相同的形状的数组或矩阵。q 用给定的数据替换符号表达式中的指定的符号变量subs 举例举例 f=sym(2*u);subs(f,u,2)f2=subs(f,u,u+2)a=3;subs(f2,u,a+2)subs(f2,u,a+2)sym

42、s x y f3=subs(f,u,x+y)subs(f3,x,y,1,2)ans=4f2=2*(u+2)ans=14ans=2*(a+2)+2)f3=2*x+2*yans=6u 例:指出下面各条语句的输出结果f=2*u下面的命令运行结果会是什么?subs(f3,x,y,x+y,x+y)六六类常见符号运算类常见符号运算q 因式分解、展开、合并、简化及通分等q 计算极限q 计算导数q 计算积分q 符号求和q 代数方程和微分方程求解因式分解因式分解u 因式分解factor(f)syms x;f=x6+1;factor(f)l factor 也可用于正整数的分解 s=factor(100)facto

43、r(sym(12345678901234567890)l 大整数的分解要转化成符号常量大整数的分解要转化成符号常量函数展开函数展开u 函数展开expand(f)syms x;f=(x+1)6;expand(f)l 多项式展开l 三角函数展开 syms x y;f=sin(x+y);expand(f)合并同类项合并同类项u 合并同类项collect(f,v):按指定变量按指定变量 v 进行进行合并合并collect(f):按按默认默认变量变量进行进行合并合并 syms x y;f=x2*y+y*x-x2+2*x;collect(f)collect(f,y)函数简化函数简化u 函数简化y=simp

44、le(f):对对 f 尝试多种不同的算法尝试多种不同的算法进行进行简化简化,返回其中最简短的形式返回其中最简短的形式How,y=simple(f):y 为为 f 的的最简短形式最简短形式,How 中记录的为简化过程中使用的方法。中记录的为简化过程中使用的方法。fRHOW2*cos(x)2-sin(x)23*cos(x)2-1simplify(x+1)*x*(x-1)x3-xcombine(trig)x3+3*x2+3*x+1(x+1)3factorcos(3*acos(x)4*x3-3*xexpand函数简化函数简化u 函数简化y=simplify(f):对对 f 进行简化进行简化 syms

45、x;f=sin(x)2+cos(x)2;simplify(f)syms c alpha beta;f=exp(c*log(sqrt(alpha+beta);simplify(f)函数简化函数简化举例举例 syms c alpha beta;f=(1/x3+6/x2+12/x+8)(1/3);y1=simplify(f)g1=simple(f)g2=simple(g1)l 多次使用多次使用 simple 可以达到最简表达。可以达到最简表达。例:简化例:简化分式通分分式通分u 函数简化N,D=numden(f):N 为通分后的分子,为通分后的分子,D 为通分后的分母为通分后的分母 syms x y

46、;f=x/y+y/x;N,D=numden(f)n,d=numden(sym(112/1024)horner 多项式多项式u horner 多项式:嵌套形式的多项式 syms x;f=x4+2*x3+4*x2+x+1;g=horner(f)例:例:计算极限计算极限limit(f,x,a):计算计算limit(f,a):当当默认变量默认变量趋向于趋向于 a 时的极限时的极限limit(f):计算计算 a=0 时的极限时的极限limit(f,x,a,right):计算右极限计算右极限limit(f,x,a,left):计算左极限计算左极限例:计算例:计算 ,syms x h n;L=limit(l

47、og(x+h)-log(x)/h,h,0)M=limit(1-x/n)n,n,inf)计算计算导数导数g=diff(f,v):求符号表达式求符号表达式 f 关于关于 v 的导数的导数g=diff(f):求符号表达式求符号表达式 f 关于关于默认变量默认变量的导数的导数g=diff(f,v,n):求求 f 关于关于 v 的的 n 阶导数阶导数q diff syms x;f=sin(x)+3*x2;g=diff(f,x)计算计算积分积分int(f,v,a,b):计算定积分计算定积分int(f,a,b):计算关于计算关于默认变量默认变量的定积分的定积分int(f,v):计算不定积分计算不定积分int

48、(f):计算关于计算关于默认变量默认变量的不定积分的不定积分 syms x;f=(x2+1)/(x2-2*x+2)2;I=int(f,x)K=int(exp(-x2),x,0,inf)例:计算例:计算 和和符号求和符号求和 syms n;f=1/n2;S=symsum(f,n,1,inf)S100=symsum(f,n,1,100)symsum(f,v,a,b):求和求和symsum(f,a,b):关于关于默认变量默认变量求和求和例:计算级数例:计算级数 及其前及其前100项的部分和项的部分和例:计算函数级数例:计算函数级数 syms n x;f=x/n2;S=symsum(f,n,1,inf

49、)代数方程和微分方程代数方程和微分方程求解求解u 代数方程求解solve(f,v):求方程关于指定自变量的解,求方程关于指定自变量的解,f 可以是可以是用字符串表示的方程用字符串表示的方程、符号表达式符号表达式或或符号方程符号方程;l solve 也可解方程组也可解方程组(包含非线性包含非线性);l 得不到解析解时,给出数值解。得不到解析解时,给出数值解。u 微分方程求解见实验四见实验四其它运算其它运算u 反函数finverse(f,v):求求 f 关于指定变量关于指定变量 v 的反函数的反函数finverse(f):求求 f 关于默认变量的反函数关于默认变量的反函数 syms x t;f=x

50、2+2*t;g1=finverse(f,x)g2=finverse(f,t)例:计算函数例:计算函数 的反函数的反函数Matlab 多项式运算多项式运算q Matlab 中多项式的表示方法u 在 Matlab 中,n 次多项式是用一个长度为 n+1的向量来表示,缺少的幂次项系数为 0。在在 Matlab中中表示为向量:表示为向量:注:系数中的零不能省!例:u 多项式显示:poly2sym(p,x)多项式多项式四则运算四则运算q 多项式加减运算多项式加减运算Matlab 没有提供专门进行多项式加减运算的函数,事实没有提供专门进行多项式加减运算的函数,事实上,多项式的加减就是其所对应的上,多项式的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁