1.向量的创建
(1)直接输入。
行向量:a=[1,2,3,4,5]
列向量:a=[1;2;3;4;5]
ps:二者的区别,两者构造的向量是不一样的,它们的表现形式也是不一样的。
(2)用“:”生成向量。
1> a=J:K :默认步长为1
2>a=J:D:K :步长为D
>> a=2:9
a = 2 3 4 5 6 7 8 9
>> a=2:3:11
a = 2 5 8 11
(3)函数linspace: 用来生成数据按等差形式排列的行向量。
x=linspace(X1,X2):默认步长1。
x=linspace(X1,X2,n): 产生元素个数n。
(4)函数logspace:用来生成等比形式排列的行向量。
· X=logspace(x1,x2) :在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2
· X=logspace(x1,x2,n): 在x1和x2之间生成n个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(n)=10x2
2.向量的拆分
(1)利用[]抽取向量的内容
>> A=[1 2 3 4 5 6];
>> B=A([1 2 3])
B = 1 2 3
(2)利用向量抽取另一个向量的内容
>> A=[1 2 3 4 5 6 7 8];
>> a=[4 5 6];
>> B=A(a)
B =4 5 6
(3)利用’:’抽取另一个向量的内容
在Maltab中创建矩阵有以下规则:
(1)矩阵元素必须在“[ ]”内;
(2)矩阵的同行元素之间用空格(或“,”)隔开;
(3)矩阵的行与行之间用“;”(或回车符)隔开;
(4)矩阵的元素可以是数值、变量、表达式或函数;
(5)矩阵的尺寸不必预先定义。
矩阵的创建有三种方法:直接输入法、函数创建法和文件创建法
ones()函数调用格式
ones(n):产生n* n维的全1矩阵;
ones(m,n):产生m*n维的全1矩阵。
zeros ()函数调用格式
zeros (n):产生nn维的全0矩阵;
zeros (m,n):产生mn维的全0矩阵。
eye()函数调用格式
eye (n):产生nn维的单位阵;
eye (m,n):产生mn维的单位阵。
rand()函数调用格式:产生一个元素值在(0,1)区间内的矩阵。
· Y = rand(n): 返回一个在(0,1)区间均匀分布n* n的随机矩阵Y。
· Y = rand(m,n) 或 Y = randn([m n]): 返回一个在(0,1)区间均匀分布m* n的随机矩阵Y。
·Y = rand( m ,n,p,…) 或 Y = randn([m n p…]): 产生一个在(0,1)区间均匀分布mnp*…的随机数组Y。
· Y = rand(size(A)): 返回一个和A有同样维数大小的在(0,1)区间均匀分布的随机数组。
randn()函数调用格式:产生方差为1的矩阵
·Y = randn(n): 产生符合均值为0,方差为1的标准正态分布的n* n的随机矩阵Y;
Y = randn(m,n) 或 Y = randn([m n]): 产生符合均值为0,方差为1的标准正态分布的m* n的随机矩阵Y;
Y = randn(m,n,p,…) 或 Y = randn([m n p…]): 产生符合均值为0,方差为1的标准正态分布的mnp*…的随机数组Y。
Y = randn(size(A)): 返回一个和A有同样维数大小的产生符合均值为0,方差为1的标准正态分布的随机数组Y。
在采集数据的时候采用save命令将大矩阵保存为文件,在计算时直接利用load命令将文件调入到Matlab的工作环境中使用。同时可以利用reshape命令对调入的矩阵进行行列的重排。
例如,reshape(A,m,n)表示在矩阵总元素数目不变的情况下,将矩阵A重新排成m*n的矩阵。
在进行矩阵拆分时需要注意矩阵的存储方式,矩阵是在MATLAB中是按列存储的,因此,目前常用的拆分手段有利用“:”拆分矩阵、利用向量拆分矩阵。
(1)利用“:”抽取矩阵的内容
ps:只能提取连续的行列
例:抽取A阵的1~2行,1~2列组成新的矩阵
A = [1 2 3; 4 5 6; 7 8 9];
B = A(1:2,1:2)
A =
1 2 3
4 5 6
7 8 9
B =
1 2
4 5
例:提取5*5矩阵的1.3.5列
>> A=5-round(1000*rand(5,5))/100;
>> B=A(:,[1 3 5])
B =
2.15 1.1 -2.21
-1.73 0.02 4.81
-1.64 -1.95 -1.75
3.77 -3.34 0.61
0.93 -1.1 0.62
A =
2.15 2.25 1.1 -0.75 -2.21
-1.73 -2.17 0.02 1.74 4.81
-1.64 2.17 -1.95 0.44 -1.75
3.77 -3.96 -3.34 -2.14 0.61
0.93 -3.27 -1.1 -3.84 0.62
(2)利用向量抽取矩阵的内容。
按列存储元素
A = [1 2 3; 4 5 6; 7 8 9];
B = [A([1 4]); A([2 3])]
B =
1 2
4 7
A =
1 2 3
4 5 6
7 8 9
(3)获取矩阵元素。
可以通过下标(行列索引)引用矩阵的元素,如Matrix(m,n)。也可以采用矩阵元素的序号来引用矩阵元素,矩阵元素的序号就是相应元素在内存中的排列顺序,在MATLAB中,矩阵元素按列存储。序号(Index)与下标(Subscript )是一一对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为 (j-1)*m+i 。其相互转换关系也可利用sub2ind和ind2sub函数求得。
1.单个元素的提取
a=[1,2,3;3,4,5]
b=a(1,2)
a =
1 2 3
3 4 5
b =
2
2.提取矩阵中某一行的元素
3.提取矩阵中某一列
a=[1,2,3;3,4,5];
b=a(1, :);
c=a(:,1)
b =
1 2 3
c =
1
3
4.提取矩阵中的多行元素
5.提取矩阵中的多列元素
>> a=[1,2,3;3,4,5]
b=a([1,2],:)
c=a(:,[1,3])
a =
1 2 3
3 4 5
b =
1 2 3
3 4 5
c =
1 3
3 5
6.提取矩阵中多行多列交叉点上的元素
A=5-round(1000*rand(5,5))/100;
>> B=A([3 4],[1 5])
B =
1.75 4.88
2.54 -0.4
A =
3.83 1.24 -0.15 -3.32 1.76
-3.15 -0.47 -1.58 3.66 1.98
1.75 -0.62 -4.51 4.4 4.88
2.54 1.04 -2.22 4.16 -0.4
1.57 1.02 1 3.36 4.05
7.单个元素的替换
a=[1,2,3;3,4,5]
a(2,3)=-1
a =
1 2 3
3 4 5
替换后
a =
1 2 3
3 4 -1
8.矩阵元素的重排和复制排列
(1)矩阵元素重排函数为reshape(),其调用格式为:
例1:
cc = [ 2 3 0; 0 5 5; 0 0 8]
g = reshape(cc, 1, 9)
cc =
2 3 0
0 5 5
0 0 8
g =
2 0 0 3 5 0 0 5 8
例2:
A=[1 2 3;4 5 6;7 8 9;10 12 13];
B=reshape(A,[3 4])
C=reshape(A,[2 6])
A =
1 2 3
4 5 6
7 8 9
10 12 13
B =
1 10 8 6
4 2 12 9
7 5 3 13
C =
1 7 2 8 3 9
4 10 5 12 6 13
(2)矩阵的复制排列函数是repmat(),其调用格式为:
>> A = [1 2 3 4];
>> B = repmat(A, 6, 2)
B =
1 2 3 4 1 2 3 4
1 2 3 4 1 2 3 4
1 2 3 4 1 2 3 4
1 2 3 4 1 2 3 4
1 2 3 4 1 2 3 4
1 2 3 4 1 2 3 4
(3)矩阵的扩大。
a=[1 2;3 4];
b=[a a+1; 5*a a]
b =
1 2 2 3
3 4 4 5
5 10 1 2
15 20 3 4
9.利用空矩阵删除矩阵的元素
定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。注意,X=[]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。
A = [1 2; 3 4];
A(2,:) = [];
A
A =
1 2
见https://blog.csdn.net/qq_45562910/article/details/104135841