1.矩阵建立
(1)常规表示:eg. A=[1,2,3:4,5,6:7,8,9] //此处表示三行三列,同一行用逗号或者空格分隔,不同行元素用分号分隔
(2)矩阵的拼接
eg. A=[1,2,3:4,5,6:7,8,9]; B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];C=[A,B;B,A]
复数矩阵 C=A+i*B;
2.冒号表达式
e1:e2:e3 //e1为初始值,e2为步长,若省略则步长为一,e3为终止值
格式:linspace(a,b,n) //a为第一个元素,b为最后一个元素,n元素总数,若省略则自动产生100个元素
3.结构矩阵和单元矩阵
结构矩阵里的每个元素就是结构数据类型
格式为:结构矩阵.成员名=表达式
eg. a(1).x1=10;a(1).x2='liu';a(1).x3=[11,12;34,78];
单元矩阵 eg.b={10,‘liu’,[11,12;34,78];12,'wang',[34,91;27,578];...
14,'cai',[13,890;67,231]}
4.矩阵的引用
A(2,3)=100; //biaoshiA矩阵第2行第3列被赋值为100
(1)通过下标来引用
A=[1,2,3;4,5,6];
A(4,5)=10; 若给出的行下标或列下标大于原来矩阵的行数和列数,矩阵将扩展,没有赋值的元素置为0
(2)通过序号来引用
在MATLAB中,矩阵元素按列存储,先存储第一列元素,再存储第二列,第三列......
矩阵元素的序号就是矩阵元素在内存中的排列顺序,序号与下标是一一对应的,m*n矩阵A,矩阵元素A(i,j)的序号为(j-1)*m+i
sub2ind函数:将矩阵中指定元素的行,列下列转换成存储的序号。调用格式为:D=sub2ind(S,I,J) //S行数和列数组成的向量,I转换矩阵的行下标,J转换矩阵的列下标,D为序号
A=[1:3;4:6]
eg. D=sub2ind(size(A),[1,2;2,2],[1,1;3,2]) D=1 2;6 4
ind2sub函数:将矩阵元素的序号转换为对应的下标,其调用格式为:[I,J]=ind2sub(S,D) //I行下标,J列下标,S行数和列数组成的向量,D序号
[I,J]=ind2sub([3,3],[1,3,5])
I=1 3 2 J=1 1 2
5.利用冒号表达式获得子矩阵
A(i,:) 第i行的全部元素 A(:,j) 第j列的全部元素 A(i:i+m,k:k+m) 第i行到第i+m行且在第j行到j+m列的所有元素
A(i:i+m,:) 第i行到第i+m行的所有元素
end运算符:表示某一维的末尾元素的下标
A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20]
A(end,:) ans=16 17 18 19 20
A([1,4],3:end) ans=3 4 5;18 19 20
6.利用空矩阵删除矩阵元素
空矩阵是指没有任何元素的矩阵
A(:,[2,4]) 表示删除A矩阵中第2,4列的所有元素
7.改变矩阵的形状
reshape(A,m,n):在矩阵总元素保持不变的情况下,将矩阵A重新排成m*n的二维矩阵
注意:reshape函数只改变原矩阵的行数和列数,但不改变原矩阵元素个数及存储顺序
A(:):将每一列元素堆叠起来,成为一个列向量。
8.矩阵的基本运算
(1)+,-,*,/,\,^
+,-运算需两矩阵同型,*运算需前一个矩阵的列数等于后一个矩阵的行数,如果A是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B
乘方运算可表示为A^x,A需为方阵,x为标量
(2)点运算:.*,./,.\,.^
两矩阵进行点运算就是指它们相对应元素进行相关运算,要求两矩阵同型
(3)关系运算 <,<=,>,>=,==,~= 若关系成立,表达式结果为1,否则为0
(4)逻辑运算 &,|,~
9.字符串处理
(1)字符串表示:单引号括起来的字符数列 eg xm=‘this is a book’ xm(1,4) ans=this
建立多行字符串,形成字符串矩阵 ch=['hello world';'123456'] ch(2,3) ans=3
字符串倒置:revch=ch(end:-1:1)
(2)字符串的操作
i.字符串的执行 格式:evals(s) s为字符串
ii.字符串与数值之间的转换
abs和double函数均可用来获取字符串矩阵所对应的ASCII码数值矩阵
char函数可把ASCII码矩阵转换为字符串矩阵
iii.字符串的比较:利用关系运算符或者字符串比较函数
比较函数:strcmp(str1,str2):用来比较两个字符串str1,str2是否相等,若相等则返回1,否则返回0
strncmp(str1,str2,n):用来比较两个字符串str1,str2前n个字符是否相等,若相等则返回1,否则返回0
strcmpi(str1,str2):在忽略字母大小写前提下,比较两个字符串str1,str2是否相等,若相等则返回1,否则返回0
strcnmpi(str1,str2,n):在忽略字母大小写前提下,比较两个字符串str1,str2前n个字符是否相等,若相等则返回1,否则返回0
vi.字符串的查找与替换
findstr(str1,str2):返回短字符串在长字符串中的开始位置
strrep(str1,str2,str3):将字符串str1中的所有子字符串str2替换为字符串str3