Matlab矩阵/元胞数组生成、变换及运算命令

前言:  

    Matlab用了有很多年了,有很多矩阵运用的小技巧经常忘,还需要重新找很麻烦,因此总结一下,文中某些专业函数的解释是参照别人的解释写的,可能有重复,望海涵。对大家有帮助的话可以点个赞,算是对我码字的认可,谢谢大家,有错误的地方望大佬指正!

一、矩阵和元胞数组的使用

    在Matlab中常用的数组储存方式主要有两种,矩阵和元胞

    1.数据为单(多)组一维和单组二维数据时,使用矩阵/一维数组进行储存

     例如:

                         

    2.数据为多组二维数据时,使用元胞数组同时进行多个矩阵的储存

    例如:

               

二、矩阵和元胞数组的生成

    矩阵的生成方式主要有数据读取、随机生成、0/1生成以及特殊矩阵(单位阵等)的生成,数据的读取相信大家都很熟悉,使用xlsread等函数即可,因此主要讲述下面几种矩阵的生成方法。这里包括一维数组的生成,本人使用的时候一般不会区分,所以并没有分开说。

    1.  随机矩阵

扫描二维码关注公众号,回复: 11725331 查看本文章

        rand:产生均值为0.5、幅度在0~1之间的伪随机数

                  A=rand(n):生成0到1之间的n阶随机数方阵A

                  A=rand(m,n):生成0到1之间的m×n的随机数矩阵A

        randn:产生均值为0方差为1的正态分布的随机数

                  同样的,A=randn(n)是生成方阵,A=randn(m,n)是生成m×n的矩阵

    2. 0/1矩阵

        zeros:生成全为0的矩阵

                  A=zeros(n):生成全为0的方阵

                  A=zeros(m,n):生成全为0的m×n的矩阵

        ones:生成全为1的矩阵

                  同样的,A=ones(n)是生成全为1的方阵,A=ones(m,n)生成全为1的m×n的矩阵

    3.单位矩阵

         A=eye(m,n):生成m×n的单位矩阵

         A= diag(a,k):生成第k行对角线元素为a其他元素为0的矩阵,k=0时为主对角线,k=1时为主对角线上一层对角线,-1为下一层对角线。

         例如:A=diag([1,1,1],0)                    A=diag([1,1,1],1)                                A=diag([1,1,1],-1)

                                        

        将A矩阵中k层对角线元素替换为特定的矩阵的方法:

        将A矩阵中主对角线下一层(k=-1)对角线的值替换成[5,6]。

A=ones(3);
A=A-diag(diag(A,-1),-1)+diag([5,6],-1)

    4.顺/逆序数组

         生成方法为A=(起始值;增长长度(可为负增长);终止值)

         A=(1:1:10): A=[1,2,3,4,,6,7,8,9,10],可缩写为A=(1:10)默认增长单位为1
         A=(10:-1:1):   A=[10,9,8,7,6,5,4,3,2,1]

    5.元胞数组

         A=cell(n):生成一个n×n的空值元胞数组

         A=cell(m,n):生成一个m×n的空值元胞数组,类似于矩阵

         A={X,Y,Z}:生成元胞数组{[X],[Y],[Z]},其中X、Y、Z可为具体矩阵和矩阵符号

         例如:A={[1,2],[3,4],[5,6]}

         

三、矩阵和元胞数组的运算

    1.矩阵的拼接

          A=[B,C]:将C矩阵放到B矩阵的后面,A=[[1,2],[3,4]]为[1,2,3,4]

          A=[B;C]:将C矩阵放到B矩阵的下一行,A=[[1,2];[3,4]]为[1,2;3,4]。注:拼接行矩阵需要维数一致,否则无法拼接!可以补0

          A=reshape(A,n,m):(A中必须满足有m×n个元素)把A中元素按照列读取,然后按照行拼接

          例如把A从3行4列换成4行3列,按照列的顺序读取并存储

A=[[1,2,3,4];[5,6,7,8];[9,10,11,12]];
A=reshape(A,4,3)

          

         变换一下按照行的顺序读取,按照列的顺序存储

A=[[1,2,3,4];[5,6,7,8];[9,10,11,12]];
A=reshape(A',4,3)

    2.矩阵的普通运算

        矩阵的符号运算中*要换成.*,^要换成.^,+、-和/则不需要。

        例如:

A=[1,2,3,4];
B=[5,6,7,8];
C=A.*B

         

    3.元胞数组的运算

        元胞数组的运算可以看作将矩阵从元胞中提取出来后的矩阵运算,因此只介绍矩阵的提取。

        例如:把元胞中的第m行第n列个矩阵提取出来:a={m,n}。必须要大括号,否则提取出来的不是矩阵。

A={[1,2,3],[4,5,6],[7,8,9]};
a=A{1,1}

            

    零零总总写了这么多,也花了自己一上午的时间,希望大家看完了可以点个赞,麻烦大家了啦~以后还会更新各类算法的代码,有需要的也可以私聊我~

猜你喜欢

转载自blog.csdn.net/weixin_41971010/article/details/107149457
今日推荐