数组

创建空数组

  1. A=[]

创建一维数组

一维行向量

  1. A=[1 2 3]
  2. A=[1,2,3] //用逗号或者空格间隔都可以
  3. /*冒号语法*/
  4. A=3:3:9=[3 6 9] //第一个3为start 第二个3为等差数列step步长 9为end
  5. A=3:4:9=[3 7]
  6. A=3:2:9=[3 5 7 9]
  7. A=3:5=[3 4 5] //步长不指定的时候默认为1
  8. /*linspace函数 linspace(start,end,n)*/
  9. A=linspace(3,9,3)=[3 6 9] //第一个3为start 9为end 第二个3表示形成3个数的等差数列 A=linspace(3,9,4)=[3 5 7 9]
  10. A=linspace(3,9,2)=[3,9]
  11. A=linspace(3,4,5)=[3 3.25 3.5 3.75 4] //不指定n的时候 n默认为100
  12. /* logspace函数 logspace(start,end,n) 等比一维数列*/
  13. A=logspace(2,8,3)=[100 10000 100000000] //表示产生从10^start到10^end包含n个元素的等比数列
  14. A=logspace(0,log10(32),6)=[1 2 4 8 16 32] //不指定n的时候 n默认为50

一维列向量

  1. A=[1;2;3] //分号间隔
  2. A=[1 2 3]' // '为转置运算符
  3. //一维列向量都可以由一维行向量转换而来

创建二维数组

  1. A=[1 2 3;4 5 6;7 8 9]=[1 2 3
  2. 4 5 6
  3. 7 8 9] //用分号间隔每一行
  4. B=[1:5;linspace(3,10,5);3 5 2 6 4] //每一行需要相同数目的元素
  5. C=[1 2;3;4] //error
  6. C=[[1:3] ;[linspace(2,3,3)] ;[3 5 6]] //success

创建三维数组

下标创建

  1. for i=1:2
  2. for j=1:2
  3. for k=1:2
  4. A(i,j,k)=i+j+k; //创建了一个两行两列两页的三维数组
  5. end
  6. end
  7. end
  8. >> A(:,:,1) //第一页
  9. ans =
  10. 3 4
  11. 4 5
  12. >> A(:,:,2) //第二页
  13. ans =
  14. 4 5
  15. 5 6
  16. F(3,4,:)=2:5 //创建了一个3行4列4页的三维数组
  17. F(:,:,1) = //没有指定的数值的时候 默认为0
  18. 0 0 0 0
  19. 0 0 0 0
  20. 0 0 0 2
  21. F(:,:,2) =
  22. 0 0 0 0
  23. 0 0 0 0
  24. 0 0 0 3
  25. F(:,:,3) =
  26. 0 0 0 0
  27. 0 0 0 0
  28. 0 0 0 4
  29. F(:,:,4) =
  30. 0 0 0 0
  31. 0 0 0 0
  32. 0 0 0 5

低维数组创建

  1. D2=[1 2 3 4 5 6 7 8 9]
  2. D2 =
  3. 1 2 3 4 5 6 7 8 9
  4. >> D3(:,:,1)=D2 //赋值第一页
  5. D3 =
  6. 1 2 3 4 5 6 7 8 9
  7. >> D3(:,:,2)=2*D2 //赋值第二页
  8. D3(:,:,1) =
  9. 1 2 3 4 5 6 7 8 9
  10. D3(:,:,2) =
  11. 2 4 6 8 10 12 14 16 18
  12. >> D3(:,:,3)=3*D2 //赋值第三页
  13. D3(:,:,1) =
  14. 1 2 3 4 5 6 7 8 9
  15. D3(:,:,2) =
  16. 2 4 6 8 10 12 14 16 18
  17. D3(:,:,3) =
  18. 3 6 9 12 15 18 21 24 27

理解:三维数组的每一页都是一个二维数组

函数创建三维数组

cat命令

cat命令有1+n个参数 cat(dim,a1,a2,a3,…..an)
其中dim表示维度 a1,a2,a3表示各维度的数组

  1. >> D2=[1 2 3 4 5 6 7 8 9]
  2. D2 =
  3. 1 2 3 4 5 6 7 8 9
  4. >> D3=cat(3,D2,2*D2,3*D2)
  5. D3(:,:,1) =
  6. 1 2 3 4 5 6 7 8 9
  7. D3(:,:,2) =
  8. 2 4 6 8 10 12 14 16 18
  9. D3(:,:,3) =
  10. 3 6 9 12 15 18 21 24 27

repmat命令

repmat命令的功能在于复制并堆砌代码

  1. >> D2=[1 2 3;4 5 6;7 8 9];
  2. >> D3=repmat(D2,2,3); //以D2的内容堆叠在(MxN)的矩阵B中
  3. >> D4=repmat(D2,[1 2 3]); D2的内容堆叠3维数组的每一页中 每页中都是(1X2)的举证
  4. >> D3
  5. D3 =
  6. 1 2 3 1 2 3 1 2 3
  7. 4 5 6 4 5 6 4 5 6
  8. 7 8 9 7 8 9 7 8 9
  9. 1 2 3 1 2 3 1 2 3
  10. 4 5 6 4 5 6 4 5 6
  11. 7 8 9 7 8 9 7 8 9
  12. >> D4
  13. D4(:,:,1) =
  14. 1 2 3 1 2 3
  15. 4 5 6 4 5 6
  16. 7 8 9 7 8 9
  17. D4(:,:,2) =
  18. 1 2 3 1 2 3
  19. 4 5 6 4 5 6
  20. 7 8 9 7 8 9
  21. D4(:,:,3) =
  22. 1 2 3 1 2 3
  23. 4 5 6 4 5 6
  24. 7 8 9 7 8 9

reshape命令

reshape命令的功能在于重构数组

  1. >> D2=[1 2 3 4;5 6 7 8;9 10 11 12];
  2. D3=reshape(D2,2,2,3); //重构为每页两行两列的三维数组
  3. D4=reshape(D2,2,3,2); //重构为两行三列的二维数组
  4. D5=reshape(D2,3,2,2); //重构为三行两列的二维数组
  5. >> D3
  6. D3(:,:,1) =
  7. 1 9
  8. 5 2
  9. D3(:,:,2) =
  10. 6 3
  11. 10 7
  12. D3(:,:,3) =
  13. 11 8
  14. 4 12
  15. >> D4
  16. D4(:,:,1) =
  17. 1 9 6
  18. 5 2 10
  19. D4(:,:,2) =
  20. 3 11 8
  21. 7 4 12
  22. >> D5
  23. D5(:,:,1) =
  24. 1 2
  25. 5 6
  26. 9 10
  27. D5(:,:,2) =
  28. 3 4
  29. 7 8
  30. 11 12

创建低维标准数组

zeros命令

[X = zeros](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1320915)
[X = zeros(n)](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1320926)
[X = zeros(sz1,...,szN)](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1320944)
[X = zeros(sz)](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1320966)
[X = zeros(**___**,typename)](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1320989)
[X = zeros(**___**,'like',p)](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#d120e1321012)

说明

X = zeros 返回标量 0
示例
X = zeros([n](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#btovuwl-n)) 返回一个 n×n 的全零矩阵。
示例
X = zeros([sz1,…,szN](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#btovuwl-sz1szN)) 返回由零组成的 sz1×…×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,zeros(2,3) 将返回一个 2×3 矩阵。
示例
X = zeros([sz](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#btovuwl-sz)) 返回一个由零组成的数组,其中大小向量 sz 定义 size(X)。例如,zeros([2 3]) 将返回一个 2×3 矩阵。

示例
X = zeros(**___**,[typename](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#btovuwl-typename)) 返回一个由零组成并且数据类型为 typename 的数组。例如,zeros('int8') 将返回一个 8 位整数标量 0。您可以使用上述语法中的任何输入参数。
示例
X = zeros(**___**,'like',[p](https://ww2.mathworks.cn/help/matlab/ref/zeros.html#btovuwl-p)) 将返回一个与 p 类似的由零值组成的数组,它具有与 p 相同的数据类型(类)、稀疏度和复/实性。您可以指定 typename'like',但不能同时指定二

ones命令

[X = ones](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802218)
[X = ones(n)](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802229)
[X = ones(sz1,...,szN)](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802247)
[X = ones(sz)](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802269)
[X = ones(**___**,typename)](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802292)
[X = ones(**___**,'like',p)](https://ww2.mathworks.cn/help/matlab/ref/ones.html#d120e802313)

说明


X = ones 返回标量 1
示例
X = ones([n](https://ww2.mathworks.cn/help/matlab/ref/ones.html#btpizpg-1-n)) 返回一个 n×n 的全 1 矩阵。
示例
X = ones([sz1,…,szN](https://ww2.mathworks.cn/help/matlab/ref/ones.html#btpizpg-1-sz1szN)) 返回由 1 组成的 sz1×…×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如,ones(2,3) 返回由 1 组成的 2×3 数组。
示例
X = ones([sz](https://ww2.mathworks.cn/help/matlab/ref/ones.html#btpizpg-1-sz)) 返回一个由 1 组成的数组,其中大小向量 sz 定义 size(X)。例如,ones([2,3]) 返回由 1 组成的 2×3 数组。

示例
X = ones(**___**,[typename](https://ww2.mathworks.cn/help/matlab/ref/ones.html#btpizpg-1-classname)) 在上述语法的基础上进一步指定 X 的数据类型(类)。例如,ones(5,'int8') 返回 8 位整数组成的 5×5 矩阵。
示例
X = ones(**___**,'like',[p](https://ww2.mathworks.cn/help/matlab/ref/ones.html#btpizpg-1-p)) 指定 X 具有与数值变量 p 相同的数据类型、稀疏性和复/实性(实数或复数)。

eye命令

[I = eye](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306123)
[I = eye(n)](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306134)
[I = eye(n,m)](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306153)
[I = eye(sz)](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306174)
[I = eye(**___**,typename)](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306197)
[I = eye(**___**,'like',p)](https://ww2.mathworks.cn/help/matlab/ref/eye.html#d120e306218)

说明


I = eye 返回标量 1
示例
I = eye([n](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-n)) 返回一个主对角线元素为 1 且其他位置元素为 0 的 n×n 单位矩阵。
示例
I = eye([n](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-n),[m](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-m)) 返回一个主对角线元素为 1 且其他位置元素为 0 的 n×m 矩阵。
示例
I = eye([sz](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-sz)) 返回一个主对角线元素为 1 且其他位置元素为 0 的数组。大小向量 sz 定义 size(I)。例如,eye([2,3]) 返回一个主对角线元素为 1 且其他位置元素为 0 的 2×3 数组。

示例
I = eye(**___**,[typename](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-classname)) 在上述语法的基础上还指定 I 的数据类型(类)。例如,eye(5,'int8') 返回由 8 位整数组成的 5×5 单位矩阵。
示例
I = eye(**___**,'like',[p](https://ww2.mathworks.cn/help/matlab/ref/eye.html#btpi59x-1-p)) 指定 I 具有与数值变量 p 相同的数据类型、稀疏性和复/实性(实数或复数)。

magic命令

[M = magic(n)](https://ww2.mathworks.cn/help/matlab/ref/magic.html#d120e678802)

说明

示例
M = magic([n](https://ww2.mathworks.cn/help/matlab/ref/magic.html#d120e678905)) 返回由 1n 的整数构成并且总行数和总列数相等的 n×n 矩阵。阶次 n 必须为大于或等于 3 的标量。

示例

三阶幻方矩阵

尝试此示例

计算三阶幻方矩阵 M
M = magic(3)
M = 3×3

  1. 8 1 6<br /> 3 5 7<br /> 4 9 2<br />每列中元素的总和等于每行中元素的总和。

randn命令

[X = randn](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950097)
[X = randn(n)](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950108)
[X = randn(sz1,...,szN)](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950127)
[X = randn(sz)](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950150)
[X = randn(**___**,typename)](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950174)
[X = randn(**___**,'like',p)](https://ww2.mathworks.cn/help/matlab/ref/randn.html#d120e950199)

说明


示例
X = randn 返回一个从标准正态分布中得到的随机标量。
示例
X = randn([n](https://ww2.mathworks.cn/help/matlab/ref/randn.html#bufqhx9-n)) 返回由正态分布的随机数组成的 n×n 矩阵。
示例
X = randn([sz1,…,szN](https://ww2.mathworks.cn/help/matlab/ref/randn.html#bufqhx9-sz1szN)) 返回由随机数组成的 sz1×…×szN 数组,其中 sz1,...,szN 指示每个维度的大小。例如:randn(3,4) 返回一个 3×4 的矩阵。
示例
X = randn([sz](https://ww2.mathworks.cn/help/matlab/ref/randn.html#bufqhx9-sz)) 返回由随机数组成的数组,其中大小向量 sz 定义 size(X)。例如:randn([3 4]) 返回一个 3×4 的矩阵。

示例
X = randn(**___**,[typename](https://ww2.mathworks.cn/help/matlab/ref/randn.html#bufqhx9-typename)) 返回由 typename 数据类型的随机数组成的数组。typename 输入可以是 'single''double'。您可以使用上述语法中的任何输入参数。
示例
X = randn(**___**,'like',[p](https://ww2.mathworks.cn/help/matlab/ref/randn.html#bufqhx9-p)) 返回由 p 等随机数组成的数组;也就是与 p 同一对象类型。您可以指定 typename'like',但不能同时指定两者。

gallery命令

[[A1,A2,...,Am] = gallery(matrixname,P1,P2,...,Pn)](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#d120e401260)
[[A1,A2,...,Am] = gallery(matrixname,P1,P2,...,Pn,typename)](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#d120e401287)
[A = gallery(3)](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#d120e401304)
[A = gallery(5)](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#d120e401317)

Description

example
[[A1,A2,…,Am](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_ab475510-9ee0-4828-8b4a-f05a98a76b6c)] = gallery([matrixname](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_56263992-c50b-48ad-b8bd-d842618dd775),[P1,P2,…,Pn](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_a96a5112-0ca0-459b-8a23-a4c7ff92384b)) generates a family of test matrices specified by . are input parameters required by the individual matrix family. The number of input parameters used in the calling syntax varies from matrix to matrix. The exact calling syntaxes for each matrix family are described in the section.matrixname``P1,P2,...,Pn``P1,P2,...,Pn``[matrixname](https://ww2.mathworks.cn/help/matlab/ref/gallery.html#mw_56263992-c50b-48ad-b8bd-d842618dd775)
[[A1,A2,…,Am](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_ab475510-9ee0-4828-8b4a-f05a98a76b6c)] = gallery([matrixname](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_56263992-c50b-48ad-b8bd-d842618dd775),[P1,P2,…,Pn](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_a96a5112-0ca0-459b-8a23-a4c7ff92384b),[typename](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_2d858e3d-6d81-4d17-9d37-ffc34b1dcc6e)) additionally specifies the data type of the generated test matrices.
example
[A](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_842057b6-37d9-49b5-a0e0-5e2b9b9388d0) = gallery(3) generates an ill-conditioned 3-by-3 matrix that is sensitive to perturbation.
example
[A](https://ww2.mathworks.cn/help/matlab/ref/gallery.html?lang=en#mw_842057b6-37d9-49b5-a0e0-5e2b9b9388d0) = gallery(5) generates a 5-by-5 matrix with an interesting eigenvalue problem that is sensitive to round-off errors.

  1. >> A=zeros(3,2); //3x2的0矩阵
  2. >> B=ones(2,4); //2x4的1矩阵
  3. >> C=eye(4); //4阶单位矩阵
  4. >> D=magic(5);//5阶幻方矩阵
  5. >> randn('state',0);
  6. >> E=randn(1,2); //1x2的随机数矩阵
  7. >> F=gallery(5); //有趣的特征值矩阵
  8. >> A
  9. A =
  10. 0 0
  11. 0 0
  12. 0 0
  13. >> B
  14. B =
  15. 1 1 1 1
  16. 1 1 1 1
  17. >> C
  18. C =
  19. 1 0 0 0
  20. 0 1 0 0
  21. 0 0 1 0
  22. 0 0 0 1
  23. >> D
  24. D =
  25. 17 24 1 8 15
  26. 23 5 7 14 16
  27. 4 6 13 20 22
  28. 10 12 19 21 3
  29. 11 18 25 2 9
  30. >> E
  31. E =
  32. -0.4326 -1.6656
  33. >> F
  34. F =
  35. -9 11 -21 63 -252
  36. 70 -69 141 -421 1684
  37. -575 575 -1149 3451 -13801
  38. 3891 -3891 7782 -23345 93365
  39. 1024 -1024 2048 -6144 24572

创建高维标准数组

  1. >> rng(1111,'v5uniform'); //传统 MATLAB® 5.0 均匀生成器
  2. >> D1=randn(2,3,5); //2x3x5的高维随机矩阵
  3. >> D2=ones(2,3,4); //2x3x4的高维 "1"矩阵
  4. >> D1
  5. D1(:,:,1) =
  6. -0.8689 -1.0484 1.2595
  7. -1.6618 -1.4374 -0.5199
  8. D1(:,:,2) =
  9. -0.3421 -0.2192 -0.1750
  10. 0.1683 -0.6047 -0.5881
  11. D1(:,:,3) =
  12. 2.3382 0.6063 -0.0369
  13. -0.3424 0.4485 0.8916
  14. D1(:,:,4) =
  15. -0.3804 1.3965 -0.6245
  16. -0.2104 0.6835 0.3089
  17. D1(:,:,5) =
  18. -1.4704 -0.6139 -1.4988
  19. 1.9986 1.6112 -1.6569
  20. >> D2
  21. D2(:,:,1) =
  22. 1 1 1
  23. 1 1 1
  24. D2(:,:,2) =
  25. 1 1 1
  26. 1 1 1
  27. D2(:,:,3) =
  28. 1 1 1
  29. 1 1 1
  30. D2(:,:,4) =
  31. 1 1 1
  32. 1 1 1

多维数组及其操作

多维数组的属性

  1. >> A=cat(4,[9 2;6 5],[7 1;8 4]);
  2. >> size(A) //获取数组A的尺寸属性
  3. ans =
  4. 2 2 1 2
  5. >> ndims(A) //获取A的维度
  6. ans =
  7. 4
  8. >> whos //获取A的属性
  9. Name Size Bytes Class Attributes
  10. A 2x2x1x2 64 double