Matlab学习笔记一:矩阵基础

矩阵的创建

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值