MATLAB基础(二)向量与矩阵 |
您所在的位置:网站首页 › matlab求矩阵各行的和 › MATLAB基础(二)向量与矩阵 |
MATLAB基础(二)笔记
1.行向量与列向量(1)创建行向量(2)冒号运算符和Linspace函数(3)引用与修改元素(4)创建列向量
2.矩阵变量(1)创建矩阵变量(2)创建特殊矩阵的函数①zeros函数②ones函数③eye函数④rand函数⑤randi函数⑥randn函数⑦magic函数⑧diag函数
(3)引用与修改矩阵元素①下标索引②线性索引③修改
(4)维数①length函数②size函数③numel函数④reshape函数
(5)空向量
3.矩阵的基本运算(1)矩阵的加减法(2)矩阵的乘法①正常乘(*)②数乘(*)③点乘(.*)④标量积(dot)⑤向量积(cross)⑥混合积⑦卷积(conv)⑧解卷积⑨张量积(kron)
(3)矩阵的除法①左除( \ )②右除③元素左除④元素右除
4、逻辑向量(1) 逻辑表达式(2)逻辑内置函数①true、false函数②any、all函数③find函数④isequal函数
一个矩阵的维数为r x c,其中r为行向量的个数,c是列向量的个数。 1.行向量与列向量 (1)创建行向量 >> v=[1 2 3 4] v = 1 2 3 4 >> w=[1,2,3,4] w = 1 2 3 4(2)冒号运算符和Linspace函数 若向量中的值有规律,可用冒号运算符循环访问 >> v=1:9 v = 1 2 3 4 5 6 7 8 9 >> v=1:2:9 v = 1 3 5 7 9 其中v=1:2:9中的2为步长在此情况下,不需要用 [ ] 来定义向量linspace函数创建一个线性间隔的空间,linspace(x,y,n)创建一个从x到y有n个值的向量 >> linspace(3,100,4) ans = 3.0000 35.3333 67.6667 100.0000
logsapce函数创建一个对数间隔的向量,logspace(x,y,n)创建一个从x^10到y^10有n个值的向量, 若n被忽略,则默认为100个点。 (3)引用与修改元素 MATLAB中索引从1开始 1 2 3 4 5 6 7 8 9 10 >> v v = 1 3 5 7 9 >> v(3) ans = 5 >> c=v(2:5) c = 3 5 7 9任何向量都可以通过索引送入另一个向量,索引不需要按顺序 >> v([1 5 3]) ans = 1 9 5 向量[1 5 3]被称为索引向量,指定的是原始向量通过指定向量中的索引或下标,可以改变向量元素中存储的值:v[4]=10通过引用一个现状还不存在的向量,可以拓展一个向量如果向量的结尾和指定的元素之间还有空,则用0填充 (4)创建列向量可以通过将值放在方括号中,用分号( ;)隔开 >> b=[1;2;3;4;5] b = 1 2 3 4 5没有直接的方法使用冒号运算符得到列向量,但可以通过转置 >> r=1:3 r = 1 2 3 >> c=r.' c = 1 2 3 c'——共轭转置c.'——转置 2.矩阵变量 (1)创建矩阵变量 行向量的值用空格或逗号隔开,不同的行用分号隔开 >> mat=[1,2,3;4,5,6] mat = 1 2 3 4 5 6 每行值的个数必须相等行里能使用冒号运算符不同行间也可以使用回车键替代分号 (2)创建特殊矩阵的函数 ①zeros函数产生全0矩阵,即零矩阵 >> zeros(3) ans = 0 0 0 0 0 0 0 0 0 ②ones函数产生全1的矩阵,即幺矩阵 >> ones(3) ans = 1 1 1 1 1 1 1 1 1 ③eye函数产生对角线为1的矩阵。当矩阵为方阵时,得到一个单位矩阵 >> eye(3) ans = 1 0 0 0 1 0 0 0 1 ④rand函数产生(0,1)区间均匀分布的随机矩阵 >> rand(3) ans = 0.8147 0.9134 0.2785 0.9058 0.6324 0.5469 0.1270 0.0975 0.9575也可以传递两个参数明确指定行列数 >> rand(2,3) ans = 0.9649 0.9706 0.4854 0.1576 0.9572 0.8003 ⑤randi函数使用randi能够生成随机整数矩阵,并且可以指定范围与生成矩阵的维数 >> randi([20,30],2,3) ans = 21 30 30 24 28 27 >> randi([10,20],2) ans = 10 20 19 17 ⑥randn函数产生均值为0,方差为1的标准正态分布随机矩阵 >> randn(3) ans = -0.2414 -0.8649 0.6277 0.3192 -0.0301 1.0933 0.3129 -0.1649 1.1093 ⑦magic函数幻方矩阵:产生行、列、对角线和相等的方阵 >> magic(3) ans = 8 1 6 3 5 7 4 9 2 ⑧diag函数取得矩阵的对角线元素,或生成以该向量为对角的矩阵 >> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> diag(ans) ans = 16 11 6 1 >> diag(ans) ans = 16 0 0 0 0 11 0 0 0 0 6 0 0 0 0 1通过diag(a,n)中的n也可以控制取得对角线平行线上的元素 >> diag(magic(4),1) ans = 2 10 12类似的有: triu(A)函数,生成上三角矩阵(为A中对应元素),其余元素为0 tril(A)函数,生成下三角矩阵,其余元素为0 (3)引用与修改矩阵元素 ①下标索引 >> mat=[2:4;3:5] mat = 2 3 4 3 4 5 >> mat(2,3) ans = 5 >> mat(1:2,2:3) ans = 3 4 4 5注意创建矩阵时使用方括号 [ ] 引用矩阵时使用圆括号() 利用冒号 :,可以引用矩阵所有的行和列 mat = 2 3 4 3 4 5 >> mat(1,:) ans = 2 3 4 ②线性索引MATLAB在内存中存储矩阵是以列为主的顺序分配的(逐列式的),故线性索引提取元素时是按列进行的。 a = 100 77 28 14 >> a(1) ans = 100 >> a(2) ans = 28 >> a(3) ans = 77 >> a(4) ans = 14 ③修改一个矩阵的任何子集都能修改,只要将要赋给的子集与被修改的子集具有相同数量的行和列即可。 >> a(3)=11 a = 100 11 28 14也可以改变一个矩阵的整行或整列 >> a(2,:)=[2 3] a = 100 11 2 3 (4)维数 ①length函数length函数返回向量中元素的个数 b = 1 2 3 4 >> length (b) ans = 4对于一个矩阵,length函数返回行、列向量中较大的那个 c = 1 2 3 4 5 6 >> length(c) ans = 3 ②size函数size函数返回行、列向量的个数 >> size(c) ans = 2 3也可以用一个向量来接受这两个返回量 >> [m,n]=size(c) m = 2 n = 3 ③numel函数返回数组(向量或矩阵)所有元素的个数 c = 1 2 3 4 5 6 >> numel(c) ans = 6MATLAB还有一个内置表达end,用来提取向量中的最后一个元素 >> c(1,end) ans = 3 >> c(end) ans = 6 ④reshape函数reshape函数可以改变一个矩阵的维数 >> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> reshape(ans,2,8) ans = 16 9 2 7 3 6 13 12 5 4 11 14 10 15 8 1下面介绍几个特殊的改变矩阵维数的函数: fliplr函数从左到右“翻转”矩阵; flipud函数上下”翻转“矩阵; rot90函数逆时针90°旋转矩阵 repmat用来创建一个矩阵:repmat(mat,m,n) a = 1 2 3 4 >> fliplr(a) ans = 2 1 4 3 >> fliplr(ans) ans = 1 2 3 4 >> rot90(ans) ans = 2 4 1 3 >> repmat(ans,3,2) ans = 2 4 2 4 1 3 1 3 2 4 2 4 1 3 1 3 2 4 2 4 1 3 1 3 (5)空向量 >> evec=[] evec = [] >> length (evec) ans = 0可以通过连接给空向量添加值 >> evec=[evec 4] evec = 4 >> evec=[evec 11] evec = 4 11空向量可用于删除向量中的元素 b = 1 2 3 4 >> b(2)=[] b = 1 3 4 3.矩阵的基本运算 (1)矩阵的加减法矩阵与标量的加减等于矩阵中所有元素与此标量的加减. c = 1 2 3 4 5 6 >> c+2 ans = 3 4 5 6 7 8 (2)矩阵的乘法 ①正常乘(*)C = A*B 是 A 和 B 的矩阵乘积。如果 A 是 m×p 矩阵,B 是 p×n 矩阵,则 C 是通过以下公式定义的 m×n 矩阵: ②数乘(*)用这个常数去乘矩阵的每一个元素 c = 1 2 3 4 5 6 >> 3*c ans = 3 6 9 12 15 18 ③点乘(.*)要求两个矩阵有相同的维数,对应元素相乘 d = 3 6 9 12 15 18 >> c c = 1 2 3 4 5 6 >> x=d.*c x = 3 12 27 48 75 108 ④标量积(dot)返回 A 和 B 的标量点积(内积) 语法: C = dot(A,B) C = dot(A,B,dim)dim:按指定维数dim求两矩阵的标量积 沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。 考虑两个二维输入数组:A 和 B: dot(A,B,1) 将 A 和 B 的列视为向量,并返回对应列的点积。 dot(A,B,2) 将 A 和 B 的行视为向量,并返回对应行的点积。 如果 dim 大于 ndims(A),则 dot 返回 conj(A).*B。 ⑤向量积(cross)返回 A 和 B 的叉积 cross(A,B) cross(A,B,dim) ⑥混合积dot(A,cross(B,C)) ⑦卷积(conv)conv(A,B) ⑧解卷积[q,r]=deconv(B,A) ⑨张量积(kron)kron(A,B) (3)矩阵的除法 ①左除( \ )当A、B是线性方程组AX=B中的系数矩阵和常数矩阵时,A \ B是方程组AX=B的解 ②右除当A、B是线性方程组XA=B中的系数矩阵和常数矩阵时,B \ A是方程组XA=B*的解 ③元素左除A .\ B 是指B的个元素除以A的对应元素 ④元素右除A ./ B 是指A的个元素除以B的对应元素 4、逻辑向量 (1) 逻辑表达式逻辑向量使用产生真/假的关系表达式 a = 5 8 4 8 >> isg=a>6 isg = 2×2 logical 数组 0 1 0 1结果是一个0、1组成的向量,可以在该isg向量上进行数值运算,但其类型是逻辑型。 这个逻辑向量可以用来索引原始向量: >> a(isg) ans = 8 8 (2)逻辑内置函数 ①true、false函数可以创建全逻辑1或0的向量或矩阵 >> false(2) ans = 2×2 logical 数组 0 0 0 0 >> true (1,5) ans = 1×5 logical 数组 1 1 1 1 1 ②any、all函数任意元素为逻辑真(非零),any函数返回逻辑真 所有元素为非零时,all函数返回逻辑真 ③find函数find函数返回满足规定条件的索引下标 >> find(b>5) ans = 4 5 6 >> find(a>4) ans = 1 3 4(对矩阵使用线性索引) ④isequal函数两向量相等则返回1,否则返回0 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |