矩阵的创建

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐