查看原文:http://houyewei.com/archives/493
2.2.1++矩阵的建立
1.直接输入法
++++最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
+
2.利用M文件建立矩阵
++++对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。
+
++++例2-2++利用M文件建立MYMAT矩阵。
(1)+启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:
(2)+把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。
(3)+在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。
+
3.利用冒号表达式建立一个向量
++++冒号表达式可以产生一个行向量,一般格式是:
++++e1:e2:e3
其中e1为初始值,e2为步长,e3为终止值。
在MATLAB中,还可以用linspace函数产生行向量。其调用格式为:
linspace(a,b,n)
其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。
4.建立大矩阵
大矩阵可由方括号中的小矩阵或向量建立起来。
+
2.2.2++矩阵的拆分
1.矩阵元素
++++通过下标引用矩阵的元素,例如
A(3,2)=200
采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如
A=[1,2,3;4,5,6];
A(3)
ans+=
+++++2
显然,序号(Index)与下标(Subscript+)是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。
+
2.矩阵拆分
++++(1)+利用冒号表达式获得子矩阵
++++++++①+A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。
++++++++②+A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。
此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。
+
++++(2)+利用空矩阵删除矩阵的元素
++++在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。注意,X=[]与clear+X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。
+
2.2.3++特殊矩阵
1.通用的特殊矩阵
常用的产生通用特殊矩阵的函数有:
zeros:产生全0矩阵(零矩阵)。
ones:产生全1矩阵(幺矩阵)。
eye:产生单位矩阵。
rand:产生0~1间均匀分布的随机矩阵。
randn:产生均值为0,方差为1的标准正态分布随机矩阵。
+
例2-3++分别建立3×3、3×2和与矩阵A同样大小的零矩阵。
(1)+建立一个3×3零矩阵。
zeros(3)
(2)+建立一个3×2零矩阵。
zeros(3,2)
(3)+设A为2×3矩阵,则可以用zeros(size(A))建立一个与矩阵A同样大小零矩阵。
A=[1+2+3;4+5+6];++++%产生一个2×3阶矩阵A
zeros(size(A))++++++%产生一个与矩阵A同样大小的零矩阵
+
例2-4+建立随机矩阵:
(1)+在区间[20,50]内均匀分布的5阶随机矩阵。
(2)+均值为0.6、方差为0.1的5阶正态分布随机矩阵。
命令如下:
x=20+(50-20)*rand(5)
y=0.6+sqrt(0.1)*randn(5)
此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。
+
2.用于专门学科的特殊矩阵
(1)+魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n)ÿ