许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab学习笔记一:矩阵基础操作与常用函数

Matlab学习笔记一:矩阵基础操作与常用函数

阅读数 20
点赞 0
article_banner

矩阵的创建

1.直接输入法

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

a =

    1     2     3

        4     5     6

>> b=[11,12,13;21,22,23]

b =

   11    12    13

       21    22    23

2.全1矩阵的创建

>> c=ones(3,3)

c =

    1     1     1

        1     1     1

        1     1     1

3.全0矩阵的创建

>> d=zeros(3,3)

d =

    0     0     0

        0     0     0

        0     0     0

4.单位矩阵的创建

>> e=eye(3,3)

e =

    1     0     0

        0     1     0

        0     0     1

5.等差数列的创建1

>> a=1:9

a =

    1     2     3     4     5     6     7     8     9

等差数列的创建2:

>> a=linspace(0,10,6)%0--10之间产生6个点

a =

    0     2     4     6     8    10

6.等比数列的创建

>> A=logspace(0,log10(32),6)

A =

   1.0000    2.0000    4.0000    8.0000   16.0000   32.0000

7.矩阵的转置

a=a'

8.矩阵运算

矩阵矩阵分.*和*,学过高数的都懂,不啰嗦了

9.魔法矩阵的创建

>> magic(3)

ans =

    8     1     6

        3     5     7

        4     9     2

10.矩阵的水平翻转和垂直翻转

a=fliplr(a)

a=flipud(a)

A=rand(4,6)

   flipud(A)

   fliplr(A)

   flipdim(A,2) %同filplr

   rot90(A) %同‘

   rot90(A,2) %filplr+filpud

11.矩阵的重组

>> a=1:9

a =

    1     2     3     4     5     6     7     8     9

>> a=reshape(a',3,3)

a =

    1     4     7

        2     5     8

        3     6     9

12.取矩阵的连续任意行

>> a(1:2,:)

ans =

    1     4     7

        2     5     8


13.取矩阵的连续任意列

>> a(:,2:3)

ans =

    4     7

        5     8

        6     9

14.求矩阵的维数

>> ndims(a)

ans =

    2

15. 数据格式  转换

>> format short

   >> 1/3

ans =

   0.3333

>> format long

   >> 1/3

ans =

  0.33333333333333

针对数据的显示形式控制,matlab中有专用命令 format
但该命令不影响数据的储存形式和计算精度

format    默认格式
format short   5字长定点数
format long   15字长定点数
format short e   5字长浮点数
format long e    15字长浮点数
format short g
format long g
format hex      16进制
format bank      定点货币形式
format rat    小数分数表示
format +       +,-,空格
format compact    压缩空格
format loose       包括空格和空行
format long   15字长定点数
format short e   5字长浮点数
format long e    15字长浮点数
format short g
format long g
format hex      16进制
format bank      定点货币形式
format rat    小数分数表示
format +       +,-,空格
format compact    压缩空格
format loose       包括空格和空行

15.分数转为小数

>> vpa(1/2)


   ans =


   .50000000000000000000000000000000

16.精度设置

>> z = 1.0e-16

   x = 1.0e+2

>> digits(15)

   y = vpa(x*z+1)

   y =

   1.00000000000001



   >> digits(10)

   y = vpa(x*z+1)

   y =

   1.000000000



   >> digits(5)

   y = vpa(x*z+1)

   y =

   1.0000

17.取整

向零取整(截尾取整)

fix-向零取整(Round towards zero);

>> fix(3.6)

ans = 3

向负无穷取整(不超过x 的最大整数-高斯取整)

floor-向负无穷取整(Round towards minus infinity);

>> floor(-3.6)

ans = -4

向正无穷取整(大于x 的最小整数)

ceil-向正无穷取整(Round towards plus infinity);

>> ceil(-3.6)

ans = -3

向最近整数取整,四舍五入(四舍五入取整)

round-向最近整数取整,四舍五入(Round towards nearest integer);

>> round(3.5)

ans = 4

18.矩阵单双坐标的转换:

>> a=1:9;

   >> a=reshape(a',3,3);

   >> a

a =

    1     4     7

        2     5     8

        3     6     9

>> [m n]=ind2sub( size (a),2);%但坐标2转为双坐标(2,1)

   >> [m n]

ans =

    2     1

>> sub2ind(size(a),1,3)%双坐标(1,3)转为单坐标7

ans =

    7

19.数组结构测试函数

>> A=32

   isscalar(A)

   B=1:5

   isvector(B)

   isempty(B)

   B=[]

   isempty(B)

A =

   32



   ans =

    1



   B =

    1     2     3     4     5



   ans =

    1

20.对角矩阵创建

>> A=diag([1 2 3])

A =

    1     0     0

        0     2     0

        0     0     3

>> B=diag([1 2 3],2)

B =

    0     0     1     0     0

        0     0     0     2     0

        0     0     0     0     3

        0     0     0     0     0

        0     0     0     0     0

>> B=diag([1 2 3],1)

B =

    0     1     0     0

        0     0     2     0

        0     0     0     3

        0     0     0     0

>> B=diag([1 2 3],0)

B =

    1     0     0

        0     2     0

        0     0     3

>> C=[3 5 1 2;2 4 5 6]

   diag(C)

   D=diag(diag(C),-1)

C =

    3     5     1     2

        2     4     5     6



   ans =

    3

        4



   D =

    0     0     0

        3     0     0

        0     4     0

21.创建空数组

A=[]

22.创建随机数组

>> A=rand(2)

   B=rand(2,4)

   C=randn(size(A))   %功能:产生标准正态分布随机数矩阵函数

   D=randn(size(B))

A =

   0.9501    0.6068

       0.2311    0.4860



   B =

   0.8913    0.4565    0.8214    0.6154

       0.7621    0.0185    0.4447    0.7919



   C =

  -0.4326    0.1253

      -1.6656    0.2877



   D =

  -1.1465    1.1892    0.3273   -0.1867

       1.1909   -0.0376    0.1746    0.7258

rand产生的是0到1(不包括1)的随机数.

matlab的 rand函数 生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数.

matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的.

多次运行,生成相同的随机数方法:



   用rand('state',S)设定种子

   S为35阶向量,最简单的设为0就好

例: rand('state',0);rand(10)

任何生成相同的随机数方法:

试着产生和时间相关的随机数,种子与当前时间有关.

rand('state',sum(100*clock))

即: rand('state',sum(100*clock)) ;rand(10)

只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不现.

也就是如果时间相同,生成的随机数还是会相同.

在你计算机速度足够快的情况下,试运行一下:

rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5);

A和B是相同.

所以建议再增加一个随机变量,变成:

rand('state',sum(100*clock)*rand(1));

%据说matlab 的rand 函数还存在其它的根本性的问题,似乎是非随机性问题

23.对角生成函数

>> A=eye(2)

   B=ones(2,4)

   C=magic(3)

   blkdiag(A,B,C)

A =

    1     0

        0     1



   B =

    1     1     1     1

        1     1     1     1



   C =

    8     1     6

        3     5     7

        4     9     2



   ans =

    1     0     0     0     0     0     0     0     0

        0     1     0     0     0     0     0     0     0

        0     0     1     1     1     1     0     0     0

        0     0     1     1     1     1     0     0     0

        0     0     0     0     0     0     8     1     6

        0     0     0     0     0     0     3     5     7

        0     0     0     0     0     0     4     9     2

>> blkdiag(1,2,3)

ans =

    1     0     0

        0     2     0

        0     0     3

24.数组开方

>> A=[1,4;9,16]

A =

    1     4

        9    16

>> sqrt(A)
sqrtm(A)
exp(A)
expm(A)

ans =

    1     2

        3     4



   ans =

  0.4662 + 0.9359i   0.8860 - 0.2189i

      1.9935 - 0.4924i   3.7888 + 0.1152i



   ans =

 1.0e+006 *

   0.0000    0.0001

       0.0081    8.8861



   ans =

 1.0e+007 *

   0.7988    1.5181

       3.4158    6.4918

25.块操作KRON

For example, if X is 2 by 3, then KRON(X,Y) is


          [ X(1,1)*Y  X(1,2)*Y  X(1,3)*Y

            X(2,1)*Y  X(2,2)*Y  X(2,3)*Y ]

>> A=[0 1 0;1 0 2;1 1 3]

   B=magic(3)

   C=kron(A,B)

A =

    0     1     0

        1     0     2

        1     1     3



   B =

    8     1     6

        3     5     7

        4     9     2



   C =

    0     0     0     8     1     6     0     0     0

        0     0     0     3     5     7     0     0     0

        0     0     0     4     9     2     0     0     0

        8     1     6     0     0     0    16     2    12

        3     5     7     0     0     0     6    10    14

        4     9     2     0     0     0     8    18     4

        8     1     6     8     1     6    24     3    18

        3     5     7     3     5     7     9    15    21

        4     9     2     4     9     2    12    27     6


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空