matlab 常用的数组操作总结(一)

 

1.一维数组常用操作:

1.1定数线性采样linspace: X=linspace(a,b,N) 生成数组元素为N个的数组X,其第一个元素为a,最后一个元素b

1.2定数对数采样logspace:X=logspace(a,b,N)生成数组元素为N个的数组X,其第一个元素为10^a,最后一个元素10^b。

>> x=logspace(1,3,3)

x =

          10         100        1000

1.3访问一维数组的元素,以及重建自己需要的数组

数组的元素排序是列优先原则,因此对于数组A=[11 21 12 5 77]来说,A(1)表示第一个元素,A(end)表示最后一个元素,那么A(1:4)表示前4个元素组成的新的数组即[11 21 12 5], A(4:-1:2)表示有第四个,第三个,第二个元素组成的新数组,A(find(A>15))表示A中大于15的元素组成的新数组。

1.4逻辑数组  下面的例子表示A数组元素中大于30的位置对应B数组中的元素值为1,不满足的元素位置在B数组中为0,B数组中的元素只有0或1,这样的B数组叫逻辑数组,那么可以用sum(B)=1表示在A中只有1个元素满足>30。

A =

    11    21    12     5    77

>> B=A>30

B =

     0     0     0     0     1

2.二维数组的相关操作

2.1二维数组元素的访问,要注意是列优先原则,因此数组可以用一个下标来表示元素,例如对于一个二维数组AA

AA =

     1     2     3     4
     5     6     7     8

>> AA(:)=0:2:14  %单独下标:表示所有元素 ,按照列优先原则 从0到14偶数赋值

AA =

     0     4     8    12
     2     6    10    14
>> AA(:,[3,4]) %表示AA二维数组的第三、第四列的元素组成的子数组

ans =

     8    12
    10    14

2.2二维数组的数组转置与求取共轭转置矩阵

A =

     1     3     5
     2     4     6

>> B=A.'    %矩阵转置操作

B =

     1     2
     3     4
     5     6

如果要求取复数矩阵的共轭矩阵如下

A =

  1.000000000000000 + 1.000000000000000i  3.000000000000000 + 3.000000000000000i  5.000000000000000 + 5.000000000000000i
  2.000000000000000 + 2.000000000000000i  4.000000000000000 + 4.000000000000000i  6.000000000000000 + 6.000000000000000i

>> B=A' %复数矩阵的共轭矩阵(把矩阵转置后,再把每一个数换成它的共轭复数)

B =

  1.000000000000000 - 1.000000000000000i  2.000000000000000 - 2.000000000000000i
  3.000000000000000 - 3.000000000000000i  4.000000000000000 - 4.000000000000000i
  5.000000000000000 - 5.000000000000000i  6.000000000000000 - 6.000000000000000i

3.矩阵运算与数组运算

指令数组运算指令矩阵运算
A.'非共轭转置A’共轭转置
s-B,B-s标量s分别于B元素之差  
s+B,B+s标量s分别于B元素之和  
s./B,B.\ss分别被B的元素除  
A.^nA的每个元素自乘n次A^nA矩阵为方针时,自乘n次
p.^A以p为底,分别以A的元素为指数求幂值  
A+B对应元素相加  
A-B对应元素相减  
A.*B对应元素相乘A*B内维相同矩阵的乘积
A./BA的元素被B的对应元素除A/BA右除B
exp(A)以自然数e为底,分别以A的元素为指数,求幂  
log(A)对A的各元素求对数  
sqrt(A)对A各个元素求平方根sqrtm(A)

A的矩阵平方根函数

X=sqrtm(A),即矩阵X*X=A,

F(A)求A各个元素的函数值  
A#BA、B矩阵对应元素间的关系运算;#代表关系运算符  
A@BA、B矩阵对应元素间的逻辑运算;@代表逻辑运算符  

4.数组排列

4.1sort函数排序

sort函数是Matlab内置的排序函数,可以满足常用的排序需求。sort排序时,默认为升序排序,即mode的默认值是‘ascend’,降序要改为 ‘descend’。函数sort()有两个返回值,Y表示对X排序后的结果,Y与I是与X维数相同的矩阵,I 表示Y中对应元素原来在X中的下标,以此保留了数据在原数组的下标信息。

[Y,I] = sort(X,DIM,MODE)

其中 DIM的数值默认是1,表示以数组中各列为单位,对每列的各元素进行升序排列,而DIM的数值为2时,则表示以数组每行数据为单位,将每行数据的元素按照升序排列。例如:

>> A=rand(2,3)

A =

   0.814723686393179   0.126986816293506   0.632359246225410
   0.905791937075619   0.913375856139019   0.097540404999410

>> sort(A,1) %每一列数据按照升序排列

ans =

   0.814723686393179   0.126986816293506   0.097540404999410
   0.905791937075619   0.913375856139019   0.632359246225410

>> sort(A,2) %每一行数据按照升序排列

ans =

   0.126986816293506   0.632359246225410   0.814723686393179
   0.097540404999410   0.905791937075619   0.913375856139019

4.2sortrows函数排序
sortrows函数可以使用矩阵的某列值的大小对整个矩阵行进行排序,就像excel 中按照某列排序并扩展选定区域一样。

[Y,I]=sortrows(X,Colnum)

X是待排序的矩阵,Column 是列的序号,指定按照第几列进行排序,Column为正数,表示按照该列进行升序排列,若按照降序排列则在列号前加上“-”,表示按照该列进行降序排列。返回值I是一维列向量,排序后的行在原来矩阵中的行标。

 Pro=rand(4,2)

Pro =

   0.800280468888800   0.792207329559554
   0.141886338627215   0.959492426392903
   0.421761282626275   0.655740699156587
   0.915735525189067   0.035711678574190

>> [Y,I]=sortrows(Pro,1)  % 按照第一列进行升序排列

Y =

   0.141886338627215   0.959492426392903
   0.421761282626275   0.655740699156587
   0.800280468888800   0.792207329559554
   0.915735525189067   0.035711678574190


I =

     2
     3
     1
     4

>> [Y,I]=sortrows(Pro,-1)  % 按照第一列进行降序排列

Y =

   0.915735525189067   0.035711678574190
   0.800280468888800   0.792207329559554
   0.421761282626275   0.655740699156587
   0.141886338627215   0.959492426392903


I =

     4
     1
     3
     2

5.数组拆分与合并

5.1数组拆分 将使用mat2cell 

mat2cell 将数组转换成cell类型,该cell包含要拆分的子数组

例如官方例子:

A = 4×5

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15
    16    17    18    19    20
C = mat2cell(A,[2 2],[3 2])
C=2×2 cell
    {2x3 double}    {2x2 double}
    {2x3 double}    {2x2 double}

注意到而第二参数【2,2】表示将A数组的总行数4拆分 成2行+2行;而A数组的纵列数5则按照第三个参数【3,2】拆分为3列+2列,即按下图拆分,每一种颜色表示一个子数组:

12345
678910
1112131415
1617181920

因此得到的cell类型变量C中包含4个子数组。

接着可以使用deal()拷贝这个包含4个子数组的cell变量C 并且输出为4个独立的变量,每一个变量为一个子数组

[A1,A2,A3,A4]=deal(C{:})    

或者 目前(比matlab7.0新的版本)直接用[A1,A2,A3,A4]=C{:}

注意得到各个子数组的对应关系:

A1 =   1     2     3                 
          6     7     8     

A2 = 11    12    13
        16    17    18

5.2数组合并

数组合并分为 上下行合并 以及 左右列合并

例如上下行合并:A=[1 2 3 4; 5 6 7 8]

B=[22 23 24 25;26 27 28 29]

C=[A;B]

C =

     1     2     3     4
     5     6     7     8
    22    23    24    25
    26    27    28    29

注意 上下行合并必须保证A,B两个矩阵的列数目一致,否则会报错。

如将上述A,B两矩阵按照左右列合并,结果存为D,则用下面命令

D=[A B]

D =

     1     2     3     4    22    23    24    25
     5     6     7     8    26    27    28    29

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值