一、数据类型
- 矩阵是MATLAB最基本的数据对象形式。
- 单精度型实数占4个字节,双精度型实数占8个字节,在MATLAB中,数据类型默认为双精度。
- single函数可以将其他类型的数据转换为单精度,double函数可以将任意类型的数据转换为双精度。
- 在MATLAB中,虚数单位用i或j表示,6+5i和6+5j表示的是同一份复数。
- 用class函数可以获取某个数据的数据类型。
- 数据输出时,可以用format命令设置数据输出格式。
格式为 format 格式符 format命令只影响数据的输出格式,不影响数据的计算和存储。 short 输出小数点后四位,最多不超过七位有效数字,对于大于1000的实数,用5位有效数字的科学计数形式输出 long 15位有效数字形输出 short e 5位有效数字的科学记数形式输出 long e 15位有效数字的科学记数形式输出 short g 从short和short e中自动选择最佳输出方式 long g 从long和long e中自动选择最佳输出方式 rat 近似有理数表示 hex 十六进制表示 正数 负数 零 分别用+、-、空格表示 bank 银行格式,用元角分表示 compact 输出变量之间没有空行 loose 输出变量之间有空行 - 如果format命令后面不加格式符,则回到默认输出格式,默认的输出格式是short格式。
- hex格式输出单精度或双精度浮点数:
单精度浮点数(内存中占32个二进制位,第一位为符号位(0表示正数,1表示负数),8位为指数部分(2的多少次幂,存储时加上127),23位为尾数部分. 单精度浮点数先转换为二进制的科学计数法形式,再按上述法则,得到一个32位的二进制数,最后将二进制数转换为16进制的数。(双精度浮点数的转换同样如此,位数不同罢了)
二、建立矩阵 9. 最简单的矩阵建立方法,将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或者空格隔开,不同行的元素用分号隔开。 10. 可用已经建立好的矩阵建立更大的矩阵。 11. 还可以利用实部和虚部构建复数矩阵
- 冒号表达式,可利用冒号表达式产生行向量 格式 e1:e2:e3(输出包含初始值和终止值)
其中e1表示初始值 e2表示步长 e3表示终止值 若e2不写则表示步长为1 - Linspace函数产生行向量 格式 linspace(a,b,n)
- 其中a和b是生成向量的第一个和最后一个元素,n是总数,该函数与冒号表达式可以相互转换。即a:(a-b)/(n-1):b等价于linspace(a,b,n)
三、矩阵元素的引用 15. 如果给出额行下标或列下标大于原来给出的矩阵的行数和列数,则matlab将自动扩展原来的矩阵,并将扩展后的未赋值的矩阵元素置为零。
- 在matlab中,矩阵元素按列存储,即先存储第一列,再存第二列············· · · · · · 再到最后一列。
- 矩阵A(i,j)的序号为(j-1)*m+i
- sub2ind函数将矩阵中指定元素的行、列下标转换为存储的序号
格式为 D=sub2ind(S,I,J) S表示要转换矩阵的行数和列数,通常用size函数获取,I、J分别表示要转换的矩阵的行下标和列下标 如:
A=[1:3;4:6]; D=sub2ind(size(A),[1,2;2,2],[1,1;3,2]) D= 1 2 6 4
-
Ind2sub函数用于吧矩阵元素的行数和列数转换成对应的下标 格式 (I,J)=ind2sub(S,D) -
求矩阵大小有关的的函数 size 求矩阵的大小,几行几列 length 求矩阵的最长维的长度 numel 求矩阵的个数 ndims 给出矩阵的维数 -
利用冒号表达式获得子矩阵 A(i,:)表示A矩阵的第i行的全部元素 A(I:i+m,k:k+m)表示第i行到i+i+m行,第k列到k+m列的所有元素 A(:,j) 表示A矩阵的第i列的全部元素 A( : ) 表示A矩阵的每一列元素堆叠起来,形成一个包含A矩阵全部元素的列向量 此外,还可以用一般向量和end运算符来表示矩阵下标,从而获得子矩阵,end表示某一维的末尾元素的下标。 -
空矩阵,指矩阵中没有任何元素的矩阵,如X=[ ] -
将某些元素删除时可采用将其置为空矩阵的方法。 %空赋值只能有一个非冒号索引! -
reshape(A,m,n)函数再矩阵总元素保持不变的前提下,将矩阵A重新排列成m*n的二维矩阵。reshape函数只改变原矩阵的行数和列数,不改变原矩阵的个数和存储顺序。 四、变量及其操作。 -
变量名是以字母开头,后接数字,字母或者下划线的字符序列,最多63个字符。 -
matlab赋值语句有两种形式①变量=表达式;②表达式 -
如果在语句末尾加分号,则仅仅执行赋值操作,而不会显示运算的结果。 -
常用的预定义变量 Ans 计算结果的默认赋值变量 Eps 机器零阈值 Pi 圆周率Π的近似值 I,j 虚数单位 Inf,inf 无穷大,如1/0的结果 NaN,nan 非数,如0/0,inf/inf的结果 Nargin 函数输入参数个数… … -
注:尽量不要使用i,j为变量名例:
i=4; x=6+5i; x %输出x=6.0000+5.0000i y=6+5*i; y %输出y=26
- clear 命令用于删除matlab工作空间中的变量。Who和whos这两个命令用于显示在matlab工作空间中已经驻留的变量名清单。31. 常用的数学函数变量名P31
- 矩阵的超越函数:直接作用与矩阵的超越函数(对整个矩阵的运算),这些函数名都在上述内部函数名之后缀以m,并规定输入参数A必须是方阵。
- 矩阵除法,A\B等效于A的逆左乘B矩阵,B/A等效于B左乘A的逆,求矩阵的逆的函数为inv()。对于矩阵的运算,一般来说,A\B!=B/A。
- 点运算:点运算符有.*、./、.\、.^,两矩阵进行点运算是指对他们的对应元素进行相关运算。要求两矩阵同型才能进行。注: a=2./A a=2/A %报错,一个数除以一个矩阵必须用点运算。
- 关系运算符:gt <=le >=ge ==eq ~=(不等于)ne (后面的字母表示对应运算的函数。)
运算法则 ① 当两个比较量是标量的时候,直接比较大小,若关系式成立,关系式表达结果为1,否则为0. ② 当参与比较的是两个同型的矩阵时,比较的是两个矩阵同位置上的元素,最终关系运算的结果是一个与原矩阵同型的矩阵,他的元素由0 ,1组成。 ③ 当一个是标量,一个是矩阵时,将这个标量逐一与矩阵的每一个元素进行关系运算,最终关系运算的结果是一个与原矩阵同型的矩阵,他的元素由0 ,1组成。 - 关系运算函数P38 其中一个find函数,找出向量或矩阵中非零元素的位置。
- 逻辑运算P38,或、与、非
运算等级:算术运算>关系运算>逻辑运算 - 字符串是用单引号括起来的字符序列,若字符串中的字符含有单引号,则该单引号要用两个单引号表示。
- abs和double函数都可以用来获取字符串所对应的ASCII码数值矩阵值。Char函数可以把ASCII码阵转换成字符串矩阵。
- 字符串的连接、查找、替换P41.
- 结构矩阵的建立
结构矩阵元素.成员名=表达式 如,a(1).x1=10 引用结构矩阵元素的成员名时,显示其值,引用结构矩阵元素时,显示成员名和他的值,但成员是矩阵的时候,不显示具体内容,只显示成员矩阵的大小参数。引用结构矩阵的时候,只显示矩阵的大小和参数。 - rmfield函数可以用来删除结构的成员。
给a添加一个成员,a(1).x4=’1223’,一个元素添加成员时,其他元素也添加了对应的成员,只不过成员是空的。 删除结构的成员,a=refiled(a,’x4’) - 单元数据:单元数据与结构数据类似,也是把不同属性数据放在一个变量中,不同的是结构矩阵的各个元素下有成员,每个成员有自己的名字,单元矩阵的各个不同的元素就是不同类型的数据类型,用带有大括号下标的形式引用单元矩阵元素。
建立单元矩阵和一般矩阵类似,只是矩阵元素用大括号括起来。 - 引用单元矩阵的元素,大括号和圆括号的的区别具体内容P44
- celldisp函数可以用来显示整个单元矩阵的全部内容
b(3)=[ ] %删除b的第三个元素,删除后整个单位矩阵变成了行向量。 b{3}=[ ] %使第三个元素为空,而不是删除的意思。
|