matlab数组与矩阵

××××××××××××××××××××××××××

数组与矩阵

××××××××××××××××××××××××××

得到关于数组与矩阵的信息:

isempty()    :        为空,即为[]
isscalar()   :        为标量,即为单一的一个数字
isvector()   :        为向量,即为数组或者矩阵
isrow()      :        为行向量
iscolumn()   :        为列向量
issparse()   :        为稀疏矩阵
size()       :        返回数组或者矩阵的行列大小 , 返回为 [ rowline_number , columnline_number ]
length()     :        返回数组或者矩阵中行或者列中长度最大的一个
ndims()      :        返回数组或者矩阵的维度
使用命令who 可以查看有哪些变量
使用命令whos 可以查看变量的存储状态

创立数组与矩阵:

A_matrix = [ 1:3 ; 2:4 ; 3:5 ]

********    显示结果   ********

a =                            

    1     2     3

    2     3     4

    3     4     5

*******************************

其中 1:3 称为分片,默认步长为1 , 由 1 递增加步长 1 直到 3 为止 。

那么 1 : 2 : 9 所得即为 [ 1 3 5 7 9 ] ,步长为 2 , 增长到 9 。 (当然步长可以为负数)

矩阵的运算:

普通的运算符号也可以直接用于矩阵与数组之间 , 例如 + - * / \  

其中 / 为左除 , \ 为右除 。    A_matrix / B_matrix 等同于 B_matrix \ A_matrix

但运算符号 ^ 与 .^ 存在区别:

    A_matrix ^ 2 等同于 A_matrix * A_matrix

    A_matrix .^2 等同于 矩阵中的每一个元素改为自身的平方 。

    ******************************************************

    >> a.^2

    ans =

    1     4     9

    4     9    16

    9    16    25

    *******************************************************

矩阵的转置,求逆与点乘:

转置:  使用符号 ‘ 或者 .‘ 或者使用函数 transpose(matrix)

        A 为矩阵 , 那么A的转置即为      A‘        A.‘      transpose(A)

        但 ‘ 并非为真正的转置,因为当矩阵成员中存在虚数时,转置后的结果中虚数会变为

    原虚数的共轭虚数,例如:

    *******************************************************************

    >> a = [ 1+1j 2 ; 2+3j 5 ]

    a =

       1.0000 + 1.0000i   2.0000 + 0.0000i

       2.0000 + 3.0000i   5.0000 + 0.0000i

    >> a‘

    ans =

       1.0000 - 1.0000i   2.0000 - 3.0000i

       2.0000 + 0.0000i   5.0000 + 0.0000i

    >> a.‘

    ans =

       1.0000 + 1.0000i   2.0000 + 3.0000i

       2.0000 + 0.0000i   5.0000 + 0.0000i

    *********************************************************************

求逆:  直接使用inv函数,inv(matrix)即可得到相应矩阵的逆矩阵

点乘:  使用函数dot( A_matrix , B_matrix ) 完成矩阵A与矩阵B的点乘

修改数组与矩阵的部分值:

**********************************************************************************************

    >> A = [ 11    10     9    34   837 ]     %   建立数组 A

A =

        11    10     9    34   837

>> C = ( A < 33 )                         %    查找符合要求的元素,返回为逻辑类型

C =

    1     1     1     0     0

>> whos 

Name      Size            Bytes  Class      Attributes

A         1x5                40  double               

C         1x5                 5  logical         

>> A(C) = 32                              %     通过数组C修改相应的符合 < 33 条件的元素的值

A =

    32    32    32    34   837     

**********************************************************************************************

当然也可以通过find函数来进行相同的操作

    A( find( A < 33 ) ) = 32  %   只是对于find函数而言,返回的数据是符合要求的元素的index索引号

矩阵的翻转与排序操作:

对于排序而言,可以使用sort函数进行排序   sort( X , DIM , MODE )

        X: 为数组或者矩阵  DIM: dimension维度   mode:‘ascend‘正序 ‘descend‘ 反序

        默认对列排序,维度为 1 , 模式为‘ascend‘正序

***********************************************************

>> a = [ 3:5 ; 1:3 ; 4:6 ]

a =

     3     4     5

     1     2     3

     4     5     6

>> sort(a)

ans =

     1     2     3

     3     4     5

     4     5     6

***********************************************************

对于数组与矩阵的翻转可以使用的函数有

rot90( matrix , k )           矩阵逆时钟旋转 k*90 度  [ rotate 90 degree ]

fliplr(A)                     矩阵左右旋转  [ flip left , flip right ]

flipud(A)                     矩阵上下旋转  [ flip up   , flip down  ]

**************************************************************

>> a = [ 1:9 ; 2:10 ]

a =

     1     2     3     4     5     6     7     8     9

     2     3     4     5     6     7     8     9    10

>> flipud(a)

ans =

     2     3     4     5     6     7     8     9    10

     1     2     3     4     5     6     7     8     9

>> a      %   调用函数并没有改变 矩阵 a 

a =

     1     2     3     4     5     6     7     8     9

     2     3     4     5     6     7     8     9    10

>> fliplr(a)

ans =

     9     8     7     6     5     4     3     2     1

    10     9     8     7     6     5     4     3     2

a =

     1     2     3     4     5     6     7     8     9

     2     3     4     5     6     7     8     9    10

>> rot90(a,1)     

ans =

     9    10

     8     9

     7     8

     6     7

     5     6

     4     5

     3     4

     2     3

     1     2

**************************************************************

对矩阵的求和操作:

(1)  使用函数sum函数对矩阵求和

    sum( A_matrix , Dim ) Dim :维度默认为 1 , 即默认为列求和

    对一个矩阵使用sum两次即得到矩阵每个元素的和

    ****************************************************

    >> a

    a =

       1.0000 + 1.0000i   2.0000 + 0.0000i

       2.0000 + 3.0000i   5.0000 + 0.0000i

    >> sum(a)      

    ans =

       3.0000 + 4.0000i   7.0000 + 0.0000i

    >> sum(a,2)

    ans =

       3.0000 + 1.0000i

       7.0000 + 3.0000i

    >> sum(sum(a))

    ans =

      10.0000 + 4.0000i

    *****************************************************

(2) 使用累加函数cumsum , 对矩阵进行累加 

    cumsum(A,DIM)   DIM 默认为 1 , 对列进行操作

    若 matrix A 为 [ 

            a1 a2 a3 ; 

            b1 b2 b3 ; 

            c1 c2 c3 

               ] 

    那么对A使用cumsum函数后,结果为 

               [ 

            a1       a2       a3    ; 

            a1+b1    a2+b2    a3+b3 ; 

            a1+b1+c1 a2+b2+c2 a3+b3+c3 

               ]

    *****************************************************

    >> a

    a =

       1.0000 + 1.0000i   2.0000 + 0.0000i

       2.0000 + 3.0000i   5.0000 + 0.0000i

       0.0000 + 5.0000i   6.0000 + 8.0000i

    >> cumsum(a)

    ans =

       1.0000 + 1.0000i   2.0000 + 0.0000i   

       3.0000 + 4.0000i   7.0000 + 0.0000i

       3.0000 + 9.0000i  13.0000 + 8.0000i

    *****************************************************

通过原矩阵构造新的矩阵:

(1) 以已有的矩阵为基本元素来构造新的矩阵,使用repmat函数:

**************************************************************

>> a = [ 1:3 ; 2:4 ]

a =

     1     2     3

     2     3     4

>> repmat(a,2,3)        

%     以矩阵 a 为基本的元素构造矩阵

%     [ a a a ; a a a ]

ans =

     1     2     3     1     2     3     1     2     3

     2     3     4     2     3     4     2     3     4

     1     2     3     1     2     3     1     2     3

     2     3     4     2     3     4     2     3     4  

**************************************************************

(2) 以已有矩阵作为对角块建立新的矩阵,使用blkdiag函数:

**************************************************************

>> blkdiag(a,a)

ans =

     1     2     3     0     0     0

     2     3     4     0     0     0

     0     0     0     1     2     3

     0     0     0     2     3     4

>> blkdiag(a,a,a)

ans =

     1     2     3     0     0     0     0     0     0

     2     3     4     0     0     0     0     0     0

     0     0     0     1     2     3     0     0     0

     0     0     0     2     3     4     0     0     0

     0     0     0     0     0     0     1     2     3

     0     0     0     0     0     0     2     3     4

**************************************************************

(3) 矩阵形状修改,使用函数reshape,但是原矩阵的元素个数不变:

**************************************************************

>> size(a)

ans =

     2     3

>> a

a =

     1     2     3

     2     3     4

>> reshape(a,3,2)

ans =

     1     3

     2     3

     2     4

**************************************************************

原文地址:http://blog.51cto.com/13824643/2156456

时间: 2024-10-08 13:48:06

matlab数组与矩阵的相关文章

matlab(数组、矩阵)

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(1)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] MATLAB中的数学计算部分包括数值计算和符号计算两大部分,数值计算是MATLAB的核心,在数值计算过程中,同样需要辅以适当的符号运算,目前符号运算的发展也非常完善,同样得到广泛的应用

MATLAB编程与应用系列-第2章 数组及矩阵的创建及操作(2)

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] 2.2 数组及矩阵的创建和操作 本节将介绍数组及矩阵的创建和操作,包括数组的输入以及数组元素的操作.由于数组和矩阵在创建和寻访的处理方式类似,因此将两者综合一起说明. ###2.2.1

Matlab随笔之矩阵入门知识

直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含未定义变量的表达式.可以是实数,或者是复数. – 例a=[1,2;3,4] 或 a=[2 1+3j;sqrt(4) 5] 创建基本矩阵的函数 – 空阵 [ ] — matlab允许输入空阵,当一项操作无结果时,返回空阵 – ones(N,M) —全部元素都为1的矩阵 – zeros(N,M) —全部元素都为0的矩阵 – rand(N,M

Matlab permute( )函数 &amp; 矩阵A 和矩阵A&#39; 的差别 &amp; imresize( )函数

Matlab  图像处理 Day9: 1.permute( ): % permute 函数功能是重新排列数组,可以交换数组的维数 % 对于二维数组而言.可以利用 permute 函数对矩阵进行转置 Sample: 2.矩阵A 和矩阵A'之间的差别: A' 是举证 A 的转置矩阵. 3.imresize( ): % 函数用于缩放处理 % 其一般形式为  <i> B = imresize(A, m) B矩阵的长宽变成A矩阵的m倍,若 m > 1 ,则 B 为 A 的放大图像 若 m <

matlab数组操作知识点总结

第一点:数组与矩阵概念的区分 数组:与其它编程语言一样,定义是:相同数据类型元素的集合. 矩阵:在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 但是需要知道的是,在matlab中经常需要使用到的是二维矩阵 接着了解一下几个常用标点符号的原理 逗号:用来将数组中的元素分开: 分号:用来将矩阵中的行分开: 中括号:界定数组的首与尾. 行数组:如a=[1,2,3,8,-1] 列数组:b=[1;2;3;8;-1] 矩阵:A=[2,4,1;8,-2,4:2,4,6] 生成矩阵的方法有

CST.Studio.Suite.2016.SP1 电磁仿真+Mathworks.Matlab.R2016a.X64 矩阵实验室

Mathworks.Matlab.R2016a.X64 矩阵实验室 PV.Desktop.V14.0.0.1 石油化工静设备计算机辅助设计桌面系统 Agilent.Keysight.ICCAP.2016.01 Agilent.Keysight.Genesys.2015.08 Agilent.Keysight.WaferPro.Express.2015.01 Agilent.Keysight.Model.Quality(MQA).2016.01 诚信合作,质量保证:@@@@@@@@@@@@@@@@

HDU - 2294 Pendant (DP滚动数组降维+矩阵快速幂)

Description On Saint Valentine's Day, Alex imagined to present a special pendant to his girl friend made by K kind of pearls. The pendant is actually a string of pearls, and its length is defined as the number of pearls in it. As is known to all, Ale

poj 1195:Mobile phones(二维树状数组,矩阵求和)

Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14489   Accepted: 6735 Description Suppose that the fourth generation mobile phone base stations in the Tampere area operate as follows. The area is divided into squares. The