当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《模糊数学》课程讲义:第一章 模糊集的基本概念 1.3 变量、数据与函数 1.4 数据的输入与输出 1.5 数组与矩阵运算 1.6 M函数与M文件 第2章 图形与可视化

资源类别:文库,文档格式:DOC,文档页数:55,文件大小:298.5KB,团购合买
2.1 概述 2.2 二维绘图的 plot 命令 2.3 图形修饰与控制 2.4 特殊坐标二维图形 2.5 特殊二维图形 2.6 三维图形
点击下载完整版文档(DOC)

3变量、数据与函数 1.3.1变量 像任何其它计算机语言一样, MATLA B也有变量名规则。变量名必须是不含有空格的 单个词。变量命名规则如下: 变量名区分字母大小写,如 Items, Items,ims及 ITEMS都是不同的变量。 变量名最多不超过19个字符。第19个字符之后的字符将被忽略, howaboutthisvariablename只能表示为 howaboutthisvariabl 变量名必须以字母打头,之后可以是任意字母、数字或下划线,如x51488, a bc d e 标点符号在 MATLAB中具有特殊含义,所以变量名中不允许使用标点符号。 除了这些命名规则, MATLAB还有几个特殊变量,见表1-3 表1-3 MATLAB特殊变量表 殊变量 取值 用于结果的缺省变量名 圆周率 eps 计算机是最小数,当和1相加就产生一个比1大的数 浮点运算数 无穷大,如1/0 不定量,如0/0 i(和 I=J 所有函数的输入变量数目 nargout 所有函数的输出变量数目 realmin 最小可用正实数 realmax 最大可用正实数 表1-3中的特殊变量在启动 MATLAB之后,自动赋予表中取值。如果定义了相同名字 的变量,原始特殊取值将会丢失,直到清除所有变量或重新启动 MATLAB。一般来讲,应 当尽量避免重新定义特殊变量 13.2注释和标点 百分号后所有的文字为注释。注释语句不能执行。如键入 x=4.5%在y=5时,%注释该x取值是在y=5时有效 显示 多条命令可以放在同一行,中间用逗号或分号隔开。逗号要求显示结果,分号禁止显示 结果。如键入 x=4.5;y=5,f=1.9 显示 在PC机上运行时,可以随时按下CTRL+C键中断 MATLAB的运行 1.3.3复数表示 MATLAB对复数不需要特殊处理,用i、j和sr(-x)(X是任意整数、实数)表示。复数 的数学运算可以写成与实数同样的形式。如键入 aF=1-2i, b=sqrt(-2), c=a+b 显示 MATLAB还可以用rea,imag,abs, angle命令来表示一个复数的实部、虚部、幅值和相 角。如 1.34数学函数

1 1.3 变量、数据与函数 1.3.1 变量 像任何其它计算机语言一样,MATLAB 也有变量名规则。变量名必须是不含有空格的 单个词。变量命名规则如下: 变量名区分字母大小写,如 ltems, items, itEms 及 ITEMS 都是不同的变量。 变量名最多不超过 19 个字符。第 19 个字符之后的字符将被忽略,如 howaboutthisvariablename 只能表示为 howaboutthisvariabl。 变量名必须以字母打头,之后可以是任意字母、数字或下划线,如 x51488,a_b_c_d_e。 标点符号在 MATLAB 中具有特殊含义,所以变量名中不允许使用标点符号。 除了这些命名规则,MATLAB 还有几个特殊变量,见表 1-3。 表 1-3 MATLAB 特殊变量表 特殊变量 取值 ans pi eps flops Inf NnN 用于结果的缺省变量名 圆周率 计算机是最小数,当和 1 相加就产生一个比 1 大的数 浮点运算数 无穷大,如 1/0 不定量,如 0/0 i(和)j i = j = −1 nargin nargout realmin realmax 所有函数的输入变量数目 所有函数的输出变量数目 最小可用正实数 最大可用正实数 表 1-3 中的特殊变量在启动 MATLAB 之后,自动赋予表中取值。如果定义了相同名字 的变量,原始特殊取值将会丢失,直到清除所有变量或重新启动 MATLAB。一般来讲,应 当尽量避免重新定义特殊变量。 1.3.2 注释和标点 百分号后所有的文字为注释。注释语句不能执行。如键入 x=4.5 %在 y=5 时,%注释该 x 取值是在 y=5 时有效 显示 多条命令可以放在同一行,中间用逗号或分号隔开。逗号要求显示结果,分号禁止显示 结果。如键入 x=4.5; y=5, f=1.9 显示 在 PC 机上运行时,可以随时按下 CTRL+C 键中断 MATLAB 的运行。 1.3.3 复数表示 MATLAB 对复数不需要特殊处理,用 i、j 和 sqrt(-x)(X 是任意整数、实数)表示。复数 的数学运算可以写成与实数同样的形式。如键入 a=1-2i, b=sqrt(-2), c=a+b 显示 MATLAB 还可以用 real, imag, abs, angle 命令来表示一个复数的实部、虚部、幅值和相 角。如 1.3.4 数学函数

MATLAB所支持的常用数学函数见到表1-4。注意, MATLAB只对孤度操作 表1-4常用函数 命令 ‖说明 绝对值或复数的辐值 反余弦 acosh(x) 反双曲余弦 angle(x) 四象限内取复数相角 asin(x) 反正弦 反双曲正弦 atan(x) 反正切 atan2(x, y) 四象限内反正切 atanh(x) 反双曲正切 ceil(x) 对+∞方向取整数 conj(x) 复数共轭 弦 双曲余弦 指数函数e fix(x) 对零方向取整数 floor(x) 对-∞方向取整数 gcd(x, y) 整数x和y的最大公约数 imag(x) 复数虚部 Icm(x, y) 整数x和y的最小公倍数 自然对数 loglO(x) 常用对数 real(x) 复数实部 除后余数;rem(x,y)给出xy的余数 四舍五入到最接近的整数 gn(x) 符号函数;返回自变量的符号,例如sign(1,5=1,sign(-2.4)=-1,sigh(0)=0 sin(x) 正弦 双曲正弦 X 平方根 tan(x) 正切 anh(x) 双曲正切 1.4数据的输入与输出 14.1save与load命令 MATLAB可以通过计算机文件来保存或加载数据。Fle菜单的 Save Workspace As…菜 单命令打开一个标准的文件对象框来保存所有当前变量。保存变量并不会将其从 MATLAB 工作空间中删除。类似地,Fle菜单的 Load Workspace As…菜单命令打开一个对话框,在 工作空间中加载以前保存的变量。加载 MATLAB工作空间中已有的同名变量将会把变量值 改为从文件中加载的值 如果Fle菜单方法不可行或不能满足用户需要, MATLAB还有save和load两个命令, 可以提供更大的灵活性。Save命令允许自己选择文件格式保存一个或多个变量,而load命 令将加载自己选择文件格式保存的文件,取出所需的变量。对于大多数用户, MATLAB命

2 MATLAB 所支持的常用数学函数见到表 1-4。注意,MATLAB 只对孤度操作。 表 1-4 常用函数 命令 说明 abs(x) acos(x) acosh(x) angle(x) asin(x) asinh(x) atan(x) atan2(x, y) atanh(x) ceil(x) conj(x) cos(x) cosh(x) exp(x) fix(x) floor(x) gcd(x, y) imag(x) lcm(x, y) log(x) log10(x) real(x) rem(x, y) round(x) sign(x) sin(x) sinh(x) sqrt(x) tan(x) tanh(x) 绝对值或复数的辐值 反余弦 反双曲余弦 四象限内取复数相角 反正弦 反双曲正弦 反正切 四象限内反正切 反双曲正切 对+  方向取整数 复数共轭 余弦 双曲余弦 指数函数 e x 对零方向取整数 对-  方向取整数 整数 x 和 y 的最大公约数 复数虚部 整数 x 和 y 的最小公倍数 自然对数 常用对数 复数实部 除后余数;rem(x, y)给出 x/y 的余数 四舍五入到最接近的整数 符号函数;返回自变量的符号,例如 sign(1, 5)=1, sign(-2.4)=-1, sigh(0)=0 正弦 双曲正弦 平方根 正切 双曲正切 1.4 数据的输入与输出 1.4.1 save 与 load 命令 MATLAB 可以通过计算机文件来保存或加载数据。File 菜单的 Save Workspace As…菜 单命令打开一个标准的文件对象框来保存所有当前变量。保存变量并不会将其从 MATLAB 工作空间中删除。类似地,File 菜单的 Load Workspace As…菜单命令打开一个对话框,在 工作空间中加载以前保存的变量。加载 MATLAB 工作空间中已有的同名变量将会把变量值 改为从文件中加载的值。 如果 File 菜单方法不可行或不能满足用户需要,MATLAB 还有 save 和 load 两个命令, 可以提供更大的灵活性。Save 命令允许自己选择文件格式保存一个或多个变量,而 load 命 令将加载自己选择文件格式保存的文件,取出所需的变量。对于大多数用户,MATLAB 命

令load和save为装载和存储数据提供了足够的工具。利用以扩展名为mat结尾的文件名 load和save假定数据是以与软件平台无关的二进制格式保存,或者用称之为fat的简单的 ASCⅡ文件格式保存。例如 (1)指令save以二进制格式将所有变量存入到 matlab. mat文件中。 (2)指令 save data以二进制格式将所有变量存入到date.mat文件中。 (3)指令 save dataxy z以二进制格式将变量x,y,z存入到data,mat文件中 指令 load data将 data. Mat中的所有变量加载到工作空间中,供用户使用。 142低级文件输入输出 当 flat ASCⅡ或.mat这两种格式还不够时, MATLAB提供了基于C语言的低级文件I/O 命令,可以读出你所知道的任意文件格式。表1-5列出了 MATLAB中基本的低级文件I/O 命令 表1-5MA∏LAB低级文件IO命令 命令 说明 fclose 关闭文件 测试文件结束 查询文件IO的错误状态 读文件的行,忽略回行符 读文件的行,包括回行符 打开文件 按照格式要求把数据写到文件或屏幕上 从文件中读二进制数据 freind 返回到文件开始 按照格式要求从文件中读数据 fseek 设置文件位置指示符 ftell 获取文件位置指示符 fwrite 把二进制数据写到文件里 表1-5的命令都可以通过help功能得到应用的详细解释。这里只对部分常用的命令进 行解释。比如打开文件函数 fopen()的语句格式为 文件句柄= - fopen(文件名,文件类型) 其中文件句柄为一个整数,供从该文件中读取数据时使用。文件名应该是用单引号括起来的 字符串,而文件类型可以由一个字符串来描述,其意义和C语言的几乎一致。如它可以采 用‘r’来表示一个只读型的文件。而‘a’表示一个可添加的文件。例如,如果想打开一个 名为 myfile,xdy的文件,但不想改变其中的内容,只想从中读出一些数据,则可以把它按 个只读型文件打开,这样就要使用下面的命令: myf= fopen( myfile.xdy’,‘r’) 如果该文件存在,则返回一个整数myf句柄,可以调用 fread()或 fscanf()等命令 从中读取数据。其中, fread()命令从该文件中按照二进制格式读取数据, fscanf命令按照 用户给定的格式读取数据。如 S= fscanf( myf,%s)%按文字型读取变量,赋值于S A= = fscanf(myf,“%d)%读5个十进制数 fprintf命令的格式举例如下: fprintf (fid, %6.2f %12&,, y): 其中,fd是被写数据文件的句柄,单引号‘中间的部分是写数据的格式要求,与C语言 的数据格式相同。每一种不同格式要用%分开,小数点前、后的数字表示数据的整数和小数

3 令 load 和 save 为装载和存储数据提供了足够的工具。利用以扩展名为.mat 结尾的文件名, load 和 save 假定数据是以与软件平台无关的二进制格式保存,或者用称之为 flat 的简单的 ASCⅡ文件格式保存。例如: (1)指令 save 以二进制格式将所有变量存入到 matlab. mat 文件中。 (2)指令 save data 以二进制格式将所有变量存入到 date. mat 文件中。 (3)指令 save data x y z 以二进制格式将变量 x, y, z 存入到 data, mat 文件中。 指令 load data 将 data. Mat 中的所有变量加载到工作空间中,供用户使用。 1.4.2 低级文件输入输出 当 flat ASCⅡ或. mat 这两种格式还不够时,MATLAB 提供了基于 C 语言的低级文件 I/O 命令,可以读出你所知道的任意文件格式。表 1-5 列出了 MATLAB 中基本的低级文件 I/O 命令。 表 1-5 MATLAB 低级文件 I/O 命令 命令 说明 fclose feof ferror fgetl fgets fopen fprintf fread frewind fscanf fseek ftell fwrite 关闭文件 测试文件结束 查询文件 I/O 的错误状态 读文件的行,忽略回行符 读文件的行,包括回行符 打开文件 按照格式要求把数据写到文件或屏幕上 从文件中读二进制数据 返回到文件开始 按照格式要求从文件中读数据 设置文件位置指示符 获取文件位置指示符 把二进制数据写到文件里 表 1-5 的命令都可以通过 help 功能得到应用的详细解释。这里只对部分常用的命令进 行解释。比如打开文件函数 fopen( )的语句格式为 文件句柄=fopen(文件名,文件类型) 其中文件句柄为一个整数,供从该文件中读取数据时使用。文件名应该是用单引号括起来的 字符串,而文件类型可以由一个字符串来描述,其意义和 C 语言的几乎一致。如它可以采 用‘r’来表示一个只读型的文件。而‘a’表示一个可添加的文件。例如,如果想打开一个 名为 myfile, xdy 的文件,但不想改变其中的内容,只想从中读出一些数据,则可以把它按 一个只读型文件打开,这样就要使用下面的命令: myf=fopen(‘myfile. xdy’,‘r’) 如果该文件存在,则返回一个整数 myf 句柄,可以调用 fread()或 fscanf()等命令 从中读取数据。其中,fread()命令从该文件中按照二进制格式读取数据,fscanf 命令按照 用户给定的格式读取数据。如 S=fscanf(myf, ‘%s’) %按文字型读取变量,赋值于 S A=fscanf(myf, ‘%5d’) %读 5 个十进制数 fprintf 命令的格式举例如下: fprintf (fid, ‘%6.2f %12.8e\n’, y); 其中,fid 是被写数据文件的句柄,单引号‘’中间的部分是写数据的格式要求,与 C 语言 的数据格式相同。每一种不同格式要用%分开,小数点前、后的数字表示数据的整数和小数

部分的位数。最后的变量是被写的数据变量名。 下面给出一个例题说明用低级文件读出数据的过程。设已有数据文件Test.tst,内容如 a d I 2.00 05372 00707 02525 1.00 09308 04892 01294 运行文件 Inout. m内容如下 input and output a data file fopen( test. txt'’,r’)%打开test.m文件,作为只读文件,句柄f fprintf(f2,“%sn,%95fn%95fn%495)n’,p)%写p,数据》令一 p=fscanf(n,%c’) %读取全部数据,按照数据原有格式,赋值于p f2= fopen(name.m’,‘w)%打开 name文件,作为写文件,句柄 %第一行为文字型,15位:第2,3行为实数型,5位小数;第4行写4个实数型数据 fclose(‘ll’) %关闭所有的文件 运行该文件时,键入 Inout 屏幕显示结果 结果文件为name.m,内容为 05372 00707 02525 09308 04892 01294 得到的结果文件内容与输入文件内容相同。 注意, fsconf命令读入的数据按文字型变量存储,里面的数据不能用来进行加法、乘法 等运算。需要运算的数据可以用M文件形式输入,参看有关M文件的章节。 1.5数组与矩阵运算 由于数据组可以定义为只有一行(或一列),因此,所有有关矩阵的运算都可以用于数 组运算,除非有区别,今后不再区分数组与矩阵 1.5.1矩阵表示与块操作 1.矩阵表达式 数组和矩阵是 MATLAB的基础。 MATLAB的数组与矩阵用表示,程序可以自行解读 矩阵的行、列标志和元素。定义矩阵的原则是:矩阵元素间用空格或逗号隔开,行用分号隔 开。例如,键入 a[123:456],b=789 2.矩阵转置 矩阵的转置用A‘表示,例如,键入 %求矩阵转置 显示结果 若矩阵为复数矩阵,求转置时首先对矩阵元素进行转置,然后再逐项求取其共轭数值

4 部分的位数。最后的变量是被写的数据变量名。 下面给出一个例题说明用低级文件读出数据的过程。设已有数据文件 Test. tst,内容如 下: a_d_l 3.0 0.6 -2.00 .05372 .00707 -.02525 -1.00 .09308 .04892 .01294 运行文件 inout.m 内容如下: % input and output a data file fl=fopen(‘test. txt’,‘r’) %打开 test. m 文件,作为只读文件,句柄 fl p=fscanf(fl,‘%c’) %读取全部数据,按照数据原有格式,赋值于 p f2=fopen(‘name. m’,‘w’) %打开 name.m 文件,作为写文件,句柄 f2 fprintf(f2,‘%s15\n, %9.5f\n, %9.5f\n, %4(9.5f)\n’,p) %写 p,数据格式: %第一行为文字型,15 位;第 2,3 行为实数型,5 位小数;第 4 行写 4 个实数型数据 fclose(‘all’) %关闭所有的文件 运行该文件时,键入 inout 屏幕显示结果 结果文件为 name. m,内容为 a_d_l 3.0 0.6 -2.00 .05372 .00707 -.02525 -1.00 .09308 .04892 .01294 得到的结果文件内容与输入文件内容相同。 注意,fsconf 命令读入的数据按文字型变量存储,里面的数据不能用来进行加法、乘法 等运算。需要运算的数据可以用 M 文件形式输入,参看有关 M 文件的章节。 1.5 数组与矩阵运算 由于数据组可以定义为只有一行(或一列),因此,所有有关矩阵的运算都可以用于数 组运算,除非有区别,今后不再区分数组与矩阵。 1.5.1 矩阵表示与块操作 1.矩阵表达式 数组和矩阵是 MATLAB 的基础。MATLAB 的数组与矩阵用[]表示,程序可以自行解读 矩阵的行、列标志和元素。定义矩阵的原则是:矩阵元素间用空格或逗号隔开,行用分号隔 开。例如,键入 a=[1 2 3;4 5 6],b=[7 8 9] 显示 2.矩阵转置 矩阵的转置用 A‘表示,例如,键入 aa=a‘ % 求矩阵转置 显示结果 若矩阵为复数矩阵,求转置时首先对矩阵元素进行转置,然后再逐项求取其共轭数值

这种转置方式又称为 Hermit转置。例如,已知 5.000+1.0001-2.000+10000i 4.0000 +3.0001 键入 %求 Hermit转置 结果为 3.矩阵大小 MA∏LAB具有矩阵大小的查询功能。查询矩阵的大小可以用表1-6中的命令 表1-6矩阵大小查询 说明 Who 显示工作空间中存在的变量及其大小 返回A矩阵的行数和列数 length(A) 返回A矩阵的最大行、列数 find(a) 给出特殊要求的矩阵元素的行、列标记 Size命令 该函数的调用格式为n,m]=size(A)。其中A为要测试的矩阵名,而返回的两个参数n和 分别为A矩阵的行数和列数。例如键入 [n,m=sie(A)%查询A的行、列数 可得 length命令 如果要测试的变量是一个数组而不是矩阵时,仍可以由size()函数来得出大小。更简 洁地,可以使用 length()函数来求出。该函数的调用格式为n= length(A),其中A为要 测试的数组名,返回的n为A数组的元素个数。如果A为矩阵,则将返回A的行、列数的 最大值,即该函数等效于max(size(A)。例如键入 n=length(A)%查询A的最大维数 可得 ·find命令 用find命令, MATLAB可以进行特殊要求的矩阵元素定位。如键入 [ij}=fnd(A>3)%指出矩阵元素中大于3的元素的行、列位置 显示结果 该结果表明,在A矩阵中,第2行的第1,2,3列元素均满足条件要求。又如,定义 矩阵: 2 k= find(abs(xl)>1)%找出绝对值大于1的元素 结果表明,x1矩阵中,第1,5个元素满足要求。 4.矩阵的块操作 MA∏LAB中提供了很多简便、智能的方式,可以对矩阵进行元素更改、插入子块、提 取子块、重排子块、扩大维数等操作。这里,重要的是冒号“:”的应用。在 MATLAB中, 冒号“:”表示“全部”。如已知

5 这种转置方式又称为 Hermit 转置。例如,已知 x= 5.000+1.000i -2.000+1.0000i 4.0000 +3.000i 键入 xx=x’ % 求 Hermit 转置 结果为 3.矩阵大小 MATLAB 具有矩阵大小的查询功能。查询矩阵的大小可以用表 1-6 中的命令。 表 1-6 矩阵大小查询 命令 说明 Whos size(A) length(A) find(A) 显示工作空间中存在的变量及其大小 返回 A 矩阵的行数和列数 返回 A 矩阵的最大行、列数 给出特殊要求的矩阵元素的行、列标记 ·size 命令 该函数的调用格式为[n,m]=size(A)。其中 A 为要测试的矩阵名,而返回的两个参数 n 和 m 分别为 A 矩阵的行数和列数。例如键入 [n,m]=size(A) %查询 A 的行、列数 可得 ·length 命令 如果要测试的变量是一个数组而不是矩阵时,仍可以由 size()函数来得出大小。更简 洁地,可以使用 length()函数来求出。该函数的调用格式为 n= length(A),其中 A 为要 测试的数组名,返回的 n 为 A 数组的元素个数。如果 A 为矩阵,则将返回 A 的行、列数的 最大值,即该函数等效于 max(size(A))。例如键入 n=length(A) %查询 A 的最大维数 可得 ·find 命令 用 find 命令,MATLAB 可以进行特殊要求的矩阵元素定位。如键入 [i,j]=find(A>3) % 指出矩阵元素中大于 3 的元素的行、列位置 显示结果 该结果表明,在 A 矩阵中,第 2 行的第 1,2,3 列元素均满足条件要求。又如,定义 x1 矩阵: x1 2 -1 0 1 2 k=find(abs(x1)>1) %找出绝对值大于 1 的元素 k= 1 5 结果表明,x1 矩阵中,第 1,5 个元素满足要求。 4.矩阵的块操作 MATLAB 中提供了很多简便、智能的方式,可以对矩阵进行元素更改、插入子块、提 取子块、重排子块、扩大维数等操作。这里,重要的是冒号“:”的应用。在 MATLAB 中, 冒号“:”表示“全部”。如已知 A=

2 369 如键入 a(1,)=b %将a的第1行中所有元素用b的元素替代 如键入 a(;)=1 %矩阵所有元素设为1 如键入 a(2,3)=10%第2行第3列元素等于10 MA∏LAB已定义的矩阵的维数可以扩大,但不能缩小,除非利用 clear命令删除该矩阵 如果输入的同名矩阵的维数小于原矩阵维数, MATLAB认为是原矩阵修改了部分元素或子 块。增加矩阵的维数时,可以只给出非零 MATLAB自动将未定义元素改为0。如键入 a(5,5)=2%定义矩阵A的第5行,第5列元素 结果显示 结果表示A矩阵扩展为5×5维矩阵 另外, MATLAB可以进行3维数组操作,用一系列矩阵表示,所有矩阵维数必须相等 如键入 p(1,)=[12;34],p(2,)=[56;78] 结果显示了3维数组P的两个子矩阵的第1列、第2列元素。在多维数组的插值运算 中,这种表示方式是有用的 5.矩阵的翻转操作 MATLAB提供了几种函数可以进行矩阵的翻转操作 ·矩阵上下翻转 fliud命令可以将n行矩阵A作上下翻转,将A的行按照n…1的顺序重新排列,A的 列保持不变。如有 3692 键入 b= lipid (a)%进行上下翻转 则有 ·矩阵左右翻转 fipr命令可以将m列矩阵A作左右翻转,将A的列按照m…1的顺序重新排列,A的 列保持不变。如对上述a矩阵,键入 c=iplr(a)%进行左右翻转 则有 ·矩阵逆时针90°旋转 rot90命令将矩阵逆时针转90°,如对于上述A阵,键入 rot90(a)%逆时针旋转90° 则有 另外,还有矩阵的对角化等操作。 MATLAB命令见表1-7 6

6 1 2 3 4 5 6 b= 7 8 9 如键入 a(1,:)=b %将 a 的第 1 行中所有元素用 b 的元素替代 如键入 a(:,:)=1 %矩阵所有元素设为 1 如键入 a(2,3)=10 %第 2 行第 3 列元素等于 10 MATLAB 已定义的矩阵的维数可以扩大,但不能缩小,除非利用 clear 命令删除该矩阵。 如果输入的同名矩阵的维数小于原矩阵维数,MATLAB 认为是原矩阵修改了部分元素或子 块。增加矩阵的维数时,可以只给出非零 MATLAB 自动将未定义元素改为 0。如键入 a(5,5)=2 %定义矩阵 A 的第 5 行,第 5 列元素 结果显示 结果表示 A 矩阵扩展为 5×5 维矩阵。 另外,MATLAB 可以进行 3 维数组操作,用一系列矩阵表示,所有矩阵维数必须相等。 如键入: p(1,:,:)=[1 2; 3 4], p(2,:,:)=[5 6; 7 8] 结果显示了 3 维数组 P 的两个子矩阵的第 1 列、第 2 列元素。在多维数组的插值运算 中,这种表示方式是有用的。 5.矩阵的翻转操作 MATLAB 提供了几种函数可以进行矩阵的翻转操作。 ·矩阵上下翻转 flipud 命令可以将 n 行矩阵 A 作上下翻转,将 A 的行按照 n…1 的顺序重新排列,A 的 列保持不变。如有 a= 1 2 3 4 5 6 7 8 9 10 11 12 键入 b=flipud(a) %进行上下翻转 则有 ·矩阵左右翻转 fliplr 命令可以将 m 列矩阵 A 作左右翻转,将 A 的列按照 m…1 的顺序重新排列,A 的 列保持不变。如对上述 a 矩阵,键入 c=fliplr(a) %进行左右翻转 则有 ·矩阵逆时针 90°旋转 rot90 命令将矩阵逆时针转 90°,如对于上述 A 阵,键入 rot90(a) % 逆时针旋转 90° 则有 另外,还有矩阵的对角化等操作。MATLAB 命令见表 1 - 7

表1-7矩阵操作函数 命令 说明 矩阵作上下翻转 矩阵作左右翻转 t90(A) 矩阵逆时针翻转90° diag(a) 提取矩阵A的对角元素,返回列向量 diag(v) 以列向量V作对角元素创建对角矩阵 提取A的下三角矩阵 triu(a) 提取A的上三角矩阵 1.5.2矩阵运算 矩阵运算包括矩阵与标量、矩阵与矩阵的运算;矩阵函数和稀疏矩阵应用等。下面分别 加以说明 1.矩阵与标量的运算 运算包括+、一、×、÷和乘方等运算。矩阵和标量运算完成矩阵的每个元素对该标量 的运算。如已知 456 MATLAB用符号“^”表示乘方。求矩阵乘方时要求矩阵为方矩阵。已知矩阵 若键入 b^2%其平方为b×b 则有 若键入 b^(-1)%实际是求b的逆矩阵 则有 b^(02)%实际是将b矩阵开5次方 p=b^(0.2) 则有 2.矩阵与矩阵的运算 矩阵加减法运算 矩阵A和B维数完全相同时,可以进行矩阵加减法运算。它会自动地使得A和B矩 阵的相应元素相加减。如果A和B的维数不相等,则 MATLAB将自动地给出错误信息,提 示两个矩阵的维数不相等。如已知 a[123456]b=7;8;9c=[10,1112 键入 a+b 则出现 由于A,B的维数不等,程序给出了错误信息。而如果键入

7 表 1 – 7 矩阵操作函数 命 令 说 明 flipud(A) fliplr(A) rot90(A) diag(A) diag(V) tril(A) triu(A) 矩阵作上下翻转 矩阵作左右翻转 矩阵逆时针翻转 90° 提取矩阵 A 的对角元素,返回列向量 以列向量 V 作对角元素创建对角矩阵 提取 A 的下三角矩阵 提取 A 的上三角矩阵 1.5.2 矩阵运算 矩阵运算包括矩阵与标量、矩阵与矩阵的运算;矩阵函数和稀疏矩阵应用等。下面分别 加以说明。 1. 矩阵与标量的运算 运算包括+、—、×、÷和乘方等运算。矩阵和标量运算完成矩阵的每个元素对该标量 的运算。如已知 a= 1 2 3 4 5 6 则 MATLAB 用符号“^”表示乘方。求矩阵乘方时要求矩阵为方矩阵。已知矩阵 b= 2 4 1 5 若键入 b^2 % 其平方为 b×b 则有 若键入 b^(-1) % 实际是求 b 的逆矩阵 则有 b^(0.2) %实际是将 b 矩阵开 5 次方 p=b^(0.2) 则有 2. 矩阵与矩阵的运算 ·矩阵加减法运算 矩阵 A 和 B 维数完全相同时,可以进行矩阵 加减法运算。它会自动地使得 A 和 B 矩 阵的相应元素相加减。如果 A 和 B 的维数不相等,则 MATLAB 将自动地给出错误信息,提 示两个矩阵的维数不相等。如已知 a=[1 2 3;4 5 6],b=[7;8;9],c=[10;11;12] 键入 a+b 则出现 由于 A,B 的维数不等,程序给出了错误信息。而如果键入

b+c 则有 矩阵乘法运算 两个矩阵A,B的维数相容时(A的列数等于B的行数),可以进行C=A×B的运算。 如对于上述定义的ab阵,若键入 则有 另外,MA∏LAB可以进行 kronecker乘法运算。指令形式为C=kron(A,B),表示An xm和B×q矩阵的C=A⑧B运算。结果为增广矩阵Cmxm,它表示A矩阵的每个元素依次与 B矩阵的所有元素相乘,组成矩阵子块,n×m个子块共同组成新的矩阵C。如若 键入 cl=kron(ab)%求A,B的 kronecker乘积 则有 阵除法运算 矩阵的除法运算包括左除和右除两种运算。其中 左除:A\B=AB,A为方矩阵; 右除:AB=AB1,B为方矩阵 如已知 a=[12;34],b=[135;246,键入 cl=a\b%左除,结果为al×b 则有 若已知 c114 336 键入 b%右除,结果为b×c 则有 矩阵的除法运算实际是求AX=B的解的过程。当A为非奇异矩阵时,结果是最小二乘 解,即矩阵除法可找到使‖AX-B误差绝对值最小的X。 矩阵的点运算 MA∏LAB中定义了一种特殊的运算,即所谓的点运算。两个矩阵之间的点运算是该矩 阵对应元素的直接运算,例如C=A.×B表示A和B矩阵的相应元素之间直接进行乘法运算 然后将结果赋给C矩阵。注意,点乘积运算要求A和B矩阵的维数相同。这种点乘积又称 为 Hadamard乘积。可以看出,这种运算和普通乘法运算是不同的,例如,已知A,B矩阵

8 b+c 则有 ·矩阵乘法运算 两个矩阵 A,B 的维数相容时(A 的列数等于 B 的行数),可以进行 C=A×B 的运算。 如对于上述定义的 a,b 阵,若键入 cc=a*b 则有 另外,MATLAB 可以进行 kronecker 乘法运算。指令形式为 C=kron(A,B),表示 An ×m和 Bp×q 矩阵的 C=A○× B 运算。结果为增广矩阵 Cnp×mq,它表示 A 矩阵的每个元素依次与 B 矩阵的所有元素相乘,组成矩阵子块,n×m 个子块共同组成新的矩阵 C。如若 a= 1 2 3 4 5 6 b= 7 8 9 键入 cl=kron(a,b) % 求 A,B 的 kronecker 乘积 则有 ·矩阵除法运算 矩阵的除法运算包括左除和右除两种运算。其中, 左除:A\B=A-1B,A 为方矩阵; 右除:A/B=AB-1,B 为方矩阵。 如已知 a=[1 2; 3 4],b=[1 3 5; 2 4 6],键入 cl=a\b %左除,结果为 a -1×b 则有 若已知 c= 1 1 3 1 2 3 4 5 6 键入 b/c %右除,结果为 b×c -1 则有 矩阵的除法运算实际是求 AX=B 的解的过程。当 A 为非奇异矩阵时,结果是最小二乘 解,即矩阵除法可找到使||AX-B||误差绝对值最小的 X。 ·矩阵的点运算 MATLAB 中定义了一种特殊的运算,即所谓的点运算。两个矩阵之间的点运算是该矩 阵对应元素的直接运算,例如 C=A.×B 表示 A 和 B 矩阵的相应元素之间直接进行乘法运算, 然后将结果赋给 C 矩阵。注意,点乘积运算要求 A 和 B 矩阵的维数相同。这种点乘积又称 为 Hadamard 乘积。可以看出,这种运算和普通乘法运算是不同的,例如,已知 A,B 矩阵 a=

3 若键入 c=a*b 则有 若键入 cc=a *b 则有 可以看出,这两种乘积结果是不同的。前者是普通矩阵乘积,而后者是两个矩阵对应元 素之间的乘积,形成了新的矩阵[a*b]。点运算在 MATLAB中起着很重要的作用,例如 如果ⅹ是一个向量,则求取函数x的模值时不能直接写成x*x,而必须写成x.*ⅹ。在进行 矩阵的点运算时,要求运算的两个矩阵的维数一致,其实一些特殊的矩阵函数,如sinO也 是由点运算的形式来进行的,因为它要对矩阵的每个元素求取正弦值。 矩阵点运算不仅可以用于点乘积运算,还可以用于其它运算。比如对前面给出的a矩阵 作a.*a运算,则将得出下面的结果: 键入 a.*a%结果形成新矩阵[a32] 则有 矩阵求幂 矩阵求幂的运算包括矩阵与常数和矩阵与矩阵的幂运算,用点运算的形式表示。具体解 释如下 ^3={a],a矩阵的3次方—A矩阵的每个元素的3次方形成的新矩阵 3.^a=3叫],3的a次方一一新矩阵的每个矩阵元素都是以3为底,以A矩阵的对应元 素为幂指数,形成的新矩阵 ^b=a吲,a的b次方一一新矩阵的每个元素都以A的元素为底,以B的对应元素为 幂指数。例如有 键入 则有 键入 则有 若有 键入

9 1 2 3 4 b= 2 2 1 2 若键入 c=a*b 则有 若键入 cc=a. *b 则有 可以看出,这两种乘积结果是不同的。前者是普通矩阵乘积,而后者是两个矩阵对应元 素之间的乘积,形成了新的矩阵[aij * bij]。点运算在 MATLAB 中起着很重要的作用,例如, 如果 x 是一个向量,则求取函数 x 的模值时不能直接写成 x*x,而必须写成 x. * x。在进行 矩阵的点运算时,要求运算的两个矩阵的维数一致,其实一些特殊的矩阵函数,如 sin()也 是由点运算的形式来进行的,因为它要对矩阵的每个元素求取正弦值。 矩阵点运算不仅可以用于点乘积运算,还可以用于其它运算。比如对前面给出的α矩阵 作 a. * a 运算,则将得出下面的结果: 键入 a. * a %结果形成新矩阵[aij2 ] 则有 ·矩阵求幂 矩阵求幂的运算包括矩阵与常数和矩阵与矩阵的幂运算,用点运算的形式表示。具体解 释如下: a. ^3=[aij2 ],α矩阵的 3 次方——A 矩阵的每个元素的 3 次方形成的新矩阵; 3. ^a=[3aij],3 的 a 次方——新矩阵的每个矩阵元素都是以 3 为底,以 A 矩阵的对应元 素为幂指数,形成的新矩阵。 a. ^b=[aij bij],a 的 b 次方——新矩阵的每个元素都以 A 的元素为底,以 B 的对应元素为 幂指数。例如有 a= 1 2 3 4 键入 a. ^3 则有 键入 3. ^a 则有 若有 b= 2 1 3 2 键入 a. ^b

则有 15.3矩阵函数 MATLAB定义了一些特殊矩阵,不必一一赋值定义。特殊矩阵定义见表1-8。 表1-8特殊矩阵 命令 说明 空矩阵 A=eye(n) n维单位矩阵 全部元素都为1的矩阵 元素服从0和1之间均匀分布的随面矩阵 randn(n, m) 元素服从零均值单位方差正态分布的随机矩阵 A-=zeros(n, m) 全部元素都为0的矩阵 MATLAB还提供了很多用于求解线性代数数值问题的矩阵函数。表1-9给出了大部分 矩阵函数的简短描述 表1-9矩阵函数 命令 说明 d=eig(a) 矩阵特征值 矩阵特征值与特征向量 行列式计算 expm(A) 矩阵求幂 inv(A) 矩阵的逆 logm(A) 矩阵的对数 norm(A) 矩阵和向量的范数 m(A,1) 1——范数 norm(A2 一范数(欧几里德范数) norm(A, inf) 无穷大范数 norm(A, p) P—一范数(只对向量) norm(A,’fro3) F——范数 null(A) 零空间 orth(A) 正交化 pinv(A) 伪逆 poly(A) 特征多项式 schur(A) 分解 sqrt(A) 矩阵平方根 svd(a) 奇异值分解 TRACE(A) 对角元素之和 注意,上述矩阵函数,如矩阵求幂等运算是通过级数求出的,与矩阵元素的点运算结果 不同。若希望求矩阵每个元素的相应函数,如sin,tan,log等运算,可以直接采用标量 算命令,如有 如键入 sin(a)

10 则有 1.5.3 矩阵函数 MATLAB 定义了一些特殊矩阵,不必一一赋值定义。特殊矩阵定义见表 1-8。 表 1-8 特殊矩阵 命令 说明 A=[ ] A=eye(n) A=ones(n,m) A=rand(n,m) A=randn(n,m) A=zeros(n,m) 空矩阵 n 维单位矩阵 全部元素都为 1 的矩阵 元素服从 0 和 1 之间均匀分布的随面矩阵 元素服从零均值单位方差正态分布的随机矩阵 全部元素都为 0 的矩阵 MATLAB 还提供了很多用于求解线性代数数值问题的矩阵函数。表 1-9 给出了大部分 矩阵函数的简短描述。 表 1-9 矩阵函数 命令 说明 d=eig(A) [v,d]=eig(A) det(A) expm(A) inv(A) logm(A) norm(A) norm(A,1) norm(A,2) norm(A, inf) norm(A,p) norm(A,’fro’) null(A) orth(A) pinv(A) poly(A) schur(A) sqrtm(A) svd(A) TRACE(A) 矩阵特征值 矩阵特征值与特征向量 行列式计算 矩阵求幂 矩阵的逆 矩阵的对数 矩阵和向量的范数 1——范数 2——范数(欧几里德范数) 无穷大范数 P——范数(只对向量) F——范数 零空间 正交化 伪逆 特征多项式 分解 矩阵平方根 奇异值分解 对角元素之和 注意,上述矩阵函数,如矩阵求幂等运算是通过级数求出的,与矩阵元素的点运算结果 不同。若希望求矩阵每个元素的相应函数,如 sin,tan,log 等运算,可以直接采用标量运 算命令,如有 a= 1 2 3 4 如键入 sin(a) 则有

点击下载完整版文档(DOC)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共55页,可试读19页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有