matlab的一些考点2.2 Matlab向量与矩阵——向量的建立及拆分、矩阵的建立及拆分、特殊矩阵

2.2.1 向量的建立及拆分

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)利用’:’抽取另一个向量的内容

2.2.2 矩阵的建立及拆分

1.矩阵的建立
  • 在Maltab中创建矩阵有以下规则:
    (1)矩阵元素必须在“[ ]”内;
    (2)矩阵的同行元素之间用空格(或“,”)隔开;
    (3)矩阵的行与行之间用“;”(或回车符)隔开;
    (4)矩阵的元素可以是数值、变量、表达式或函数;
    (5)矩阵的尺寸不必预先定义。

  • 矩阵的创建有三种方法:直接输入法、函数创建法和文件创建法

(1)直接输入法。
  1. 直接产生:用[ ]
  2. 冒号表达式产生一个行向量: a: b :c(其中a为向量的初始值,b为步长,c为向量的终止值)
  3. linspace(a,b,n)函数:其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
(2)利用MATLAB函数创建矩阵。
  1. ones()函数调用格式
    ones(n):产生n* n维的全1矩阵;
    ones(m,n):产生m*n维的全1矩阵。

  2. zeros ()函数调用格式
    zeros (n):产生nn维的全0矩阵;
    zeros (m,n):产生m
    n维的全0矩阵。

  3. eye()函数调用格式
    eye (n):产生nn维的单位阵;
    eye (m,n):产生m
    n维的单位阵。

  4. 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)区间均匀分布的随机数组。

  5. 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。

(3)利用文件建立矩阵。

采集数据的时候采用save命令将大矩阵保存为文件,在计算时直接利用load命令将文件调入到Matlab的工作环境中使用。同时可以利用reshape命令对调入的矩阵进行行列的重排
例如,reshape(A,m,n)表示在矩阵总元素数目不变的情况下,将矩阵A重新排成m*n的矩阵。

2.矩阵拆分

在进行矩阵拆分时需要注意矩阵的存储方式,矩阵是在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函数求得。

3 矩阵元素的提取与替换

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(i:i+m,:)表示取A矩阵第i~i+m行的全部元素
  • A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素
  • A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。
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(),其调用格式为:

  • B=reshape(A,m,n):返回的是一个mn矩阵B,矩阵B的元素就是矩阵A的元素,若矩阵A的元素不是mn个则提示错误;
  • B=reshape(A,m,n,p):返回的是一个多维的数组B,数组B中的元素个数和矩阵A中的元素个数相等;B
  • reshape(A,…,[],…):可以默认其中的一个维数; B=reshape(A,siz) :
    由向量siz指定数组B的维数,要求siz的各元素之积等于矩阵A的元素个数(例2)。
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     82:
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(),其调用格式为:

  • B=repmat(A,n):返回B是一个n*n块大小的矩阵,每一块矩阵都是A;
  • B=repmat(A,m,n):返回值是由m*n个块组成的大矩阵,每一个块都是矩阵A;
  • B=repmat(A,[m,n,p,…]):返回值B是一个多维数组形式的块,每一个块都是矩阵A。
>> 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)矩阵的扩大。

  1. repmat函数
  2. 连接操作符[ ]
  3. 阵列连接函数cat(该函数将在后面的第6章中进行描述)。
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

2.2.3特殊矩阵

https://blog.csdn.net/qq_45562910/article/details/104135841

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值