本节源代码:
这一节,常用矩阵及向量操作命令将被介绍,更多高级命令请使用命令help查寻,内容如下:
cat连接数组
>> %cat 连接数组 A = [1 2; 3 4] B = [4 5; 6 7] %cat(2, A, B)相当于[A, B];按行连接 cat(2,A,B) %cat(1, A, B)相当于[A; B].按列连接 cat(1,A,B) A = 1 2 3 4 B = 4 5 6 7 ans = 1 2 4 5 3 4 6 7 ans = 1 2 3 4 4 5 6 7find查找非零元素的索引或满足某条件值
>> A = [0 1 0 2 3] %向量情况 find(A) A = 0 1 0 2 3 ans = 2 4 5 >> find(A,2) % 返回前2个非0结果 ans = 2 4 >> A = [1,0;0 3] % 矩阵情况,结果为逐列将A的元素进行排序[1 0 0 3],所以结果为 1 4 A = 1 0 0 3 >> find(A) ans = 1 4 >> A = [0 1 2 3 4 5] find(A>2) % 查找满足某一条件情况 A = 0 1 2 3 4 5 ans = 4 5 6length计算元素数量
>> % length 计算元素数量 A = [1 2 3] length(A) B = [1 2 3;3 4 5] length(B) %length(a)表示矩阵a的最大的长度,即max(size(a)) 等于3,因为2和3中最大是3; A = 1 2 3 ans = 3 B = 1 2 3 3 4 5 ans = 3linspace创建规则间隔的向量
>> %linspace 创建向量 用法:linspace(a,b,N) 等同于 [a:(b-a)/N:b] linspace(1,10,5) [1:2.25:10] ans = 1.0000 3.2500 5.5000 7.7500 10.0000 ans = 1.0000 3.2500 5.5000 7.7500 10.0000 logspace创建对数间隔向量
%logspace 创建向量 %用法1.logspace(X1,X2),即在10^X1-10^X2范围内等距产生50个行向量; %2.logspace(X1,X2,N),即在10^X1-10^X2范围内等距产生N个行向量。 >> logspace(1,10) logspace(1,10,10) ans = 1.0e+10 * Columns 1 through 5 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 6 through 10 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 11 through 15 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 16 through 20 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 21 through 25 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 26 through 30 0.0000 0.0001 0.0001 0.0001 0.0002 Columns 31 through 35 0.0003 0.0005 0.0008 0.0012 0.0018 Columns 36 through 40 0.0027 0.0041 0.0063 0.0095 0.0146 Columns 41 through 45 0.0222 0.0339 0.0518 0.0791 0.1207 Columns 46 through 50 0.1842 0.2812 0.4292 0.6551 1.0000 ans = 1.0e+10 * Columns 1 through 5 0.0000 0.0000 0.0000 0.0000 0.0000 Columns 6 through 10 0.0001 0.0010 0.0100 0.1000 1.0000 max返回最大的元素
>> %C = max(A) 返回一个数组各不同维中的最大元素。 %[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。 %如果A是一个向量,max(A)返回A中的最大元素。 %如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。 A = [1 3 5; 3 9 0; 9 2 1] max(A) [Y,I] = max(A) A = 1 3 5 3 9 0 9 2 1 ans = 9 9 5 Y = 9 9 5 I = 3 2 1min返回最小的元素(与max操作一样)
prod返回列向量的乘积
>> %B = prod(A);将A矩阵不同维的元素的乘积返回到矩阵B。 %若A为向量,返回的是其所有元素的积; %若A为矩阵,返回的是按列向量的所有元素的积,然后组成一行向量。 A = [1 2 3] prod(A) A = [1 2 3; 4 5 6] prod(A) A = 1 2 3 ans = 6 A = 1 2 3 4 5 6 ans = 4 10 18reshape改变大小
%reshape 元素相同情况下,对A逐列扫描,对B逐列填充 >> A = [1 2 3; 2 3 4; 3 4 5; 6 7 8; 1 2 3 ] A = 1 2 3 2 3 4 3 4 5 6 7 8 1 2 3 >> size(A) ans = 5 3 >> reshape(A,3,5) ans = 1 6 3 2 5 2 1 4 3 8 3 2 7 4 3size计算数组大小
>> %size 获取矩阵的行数和列数 注:length()=max(size()). A = [1 2 3] size(A) A = [1 2 3 ; 2 3 4] size(A) A = 1 2 3 ans = 1 3 A = 1 2 3 2 3 4 ans = 2 3sort对每列进行排序
%sort 默认情况下,对向量或矩阵(案列)进行升序排序 >> A = [1 2 3] sort(A) A = [1 2 3 ; 3 4 1] sort(A) A = 1 2 3 ans = 1 2 3 A = 1 2 3 3 4 1 ans = 1 2 1 3 4 3 >> sort(A,2))% 对行向量排序 ans = 1 2 3 1 3 4sum对每列进行求和
>> % sum 默认情况下,计算行向量的累加结果 A = [1 2 3] sum(A) % 默认按行向量 A = 1 2 3 ans = 6 >> sum(A,2) % 按行向量 ans = 6 >> sum(A,1) % 按列向量 ans = 1 2 3eye创建一个单位矩阵
>> %Y = eye(n):返回n*n单位矩阵; %Y = eye(m,n):返回m*n单位矩阵; eye(3) ans = 1 0 0 0 1 0 0 0 1 >> eye(3,4) ans = 1 0 0 0 0 1 0 0 0 0 1 0ones创建一个数组
>> %ones的作用是产生全1矩阵,ones(N)是产生一个N*N的全1矩阵 ones(3) ans = 1 1 1 1 1 1 1 1 1 >> ones(3,2) ans = 1 1 1 1 1 1zeros创建一个零的数组
>> %zeros的作用是产生全0矩阵,zeors(N)是产生一个N*N的全0矩阵 zeros(3) ans = 0 0 0 0 0 0 0 0 0 >> zeros(2,4) ans = 0 0 0 0 0 0 0 0real计算复数的实数部分
>> %real 计算复数实数部分 A = 1 - 2i real(A) A = 1.0000 - 2.0000i ans = 1imag计算复数虚数部分
>> %imag 计算复数虚数部分 A = 1 - 2i imag(A) A = 1.0000 - 2.0000i ans = -2abs计算绝对值或者对复数求模(复数实部与虚部的平方和的算术平方根:abs(X) =sqrt(real(X).^2 + imag(X).^2))
>> %abs 计算绝对值或者对复数求模 A = -3 abs(A) A = -3 ans = 3 >> A = [1 -2] abs(A) A = 1 -2 ans = 1 2 >> A = 1 - 2i abs(A) A = 1.0000 - 2.0000i ans = 2.2361rand生成均匀分布随机数
>> % rand 生成均匀分布随机数 % rand(n):生成0到1之间的n阶随机数方阵 % rand(m,n):生成0到1之间的m×n的随机数矩阵 rand(3) ans = 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575 >> rand(3,4) ans = 0.9649 0.9572 0.1419 0.7922 0.1576 0.4854 0.4218 0.9595 0.9706 0.8003 0.9157 0.6557 randn生成标准正态分布随机数,用法与rand一致