Matlab数据类型

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本篇介绍我在南农matlab课程上的所学,我对老师ppt上的内容重新进行了整理而且给出代码案例。重要内容在矩阵。如果真的想学matlab,我不认为有任何文档可以或许超过官方文档,请移步至官网,本篇说真话只是写出来给自己和学弟学妹作期末复习用的,没有任何学习价值。还是那句话,真想学明白,请看官方文档

  
matlab默认显示运算结果,但在赋值语句后加分号只实行赋值操作
数值

双精度与单精度:double, single
符号整型与无符号整型:int8, unit8
实型与复型:real, imag
结构

structure
元胞

cell
% 注释
format

   format 只影响输特别式不影响数据存储
  代码寄义format 显示小数点后4位format long小数点后15位format short e5位有效数字科学计数法format long e16位有效数字科学计数法format rat近似有理数
  1. % 小数点后4位
  2. >> format
  3. >> pi
  4. ans =
  5.     3.1416
  6. % 小数点后15位
  7. >> format long
  8. >> pi
  9. ans =
  10.    3.141592653589793
  11. % 5位有效数字的科学计数法
  12. >> format short e
  13. >> pi
  14. ans =
  15.    3.1416e+00
  16. % 16位有效数字的科学计数法
  17. >> format long e
  18. >> pi
  19. ans =
  20.      3.141592653589793e+00
  21. % 近似有理数
  22. >> format rat
  23. >> pi
  24. ans =
  25.      355/113   
复制代码
预界说变量

变量名体现数值ans 缺省变量名pi 圆周率eps浮点运算的相对精度inf 正无穷NaN不定值0/0realmax/realmin最大/最小的浮点数i,j虚数单位nargin,nargout所用函数的输入/输出变量数量
  1. >> 1
  2. ans =
  3.      1
  4. >> pi
  5. ans =
  6.     3.1416
  7. >> eps
  8. ans =
  9.    2.2204e-16
  10. >> inf
  11. ans =
  12.    Inf
  13. >> NaN
  14. ans =
  15.    NaN
  16. >> realmax
  17. ans =
  18.   1.7977e+308
  19. >> realmin
  20. ans =
  21.   2.2251e-308
  22. >> i
  23. ans =
  24.    0.0000 + 1.0000i
  25. >> j
  26. ans =
  27.    0.0000 + 1.0000i
复制代码
内存变量的管理

whos, who显示workspace中的变量名,clear删除workspace中的全部变量
  1. >> a=1,b=2
  2. a =
  3.      1
  4. b =
  5.      2
  6. >> who
  7. 您的变量为:
  8. a  b  
  9. >> whos
  10.   Name      Size            Bytes  Class     Attributes
  11.   a         1x1                 8  double              
  12.   b         1x1                 8  double
  13. >> clear
  14. >> whos
  15. >>           
复制代码
逻辑运算与关系运算

逻辑运算

运算符寄义&与``~非 关系运算

运算符寄义>大于<小于>=大于便是<=小于便是==便是~=未便是 序列

  1. % 从1开始到4结束每隔0.5取一个
  2. >> 1:0.5:4
  3. ans =
  4.     1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000
  5. % 从1开始到2结束一共有10个等差的数
  6. >> linspace(1,2,10)
  7. ans =
  8.     1.0000    1.1111    1.2222    1.3333    1.4444    1.5556    1.6667    1.7778    1.8889    2.0000
  9. % 从10^1开始到10^2结束一共有10个等比的数
  10. >> logspace(1,2,10)
  11. ans =
  12.    10.0000   12.9155   16.6810   21.5443   27.8256   35.9381   46.4159   59.9484   77.4264  100.0000
  13.    
复制代码
矩阵

matlab中的矩阵是按列存放的,也就是说你如果用序列创建矩阵,是一列一列依次填满的。
创建矩阵

方括号括起来体现矩阵,分号体现换行,同行元素间以空格或逗号隔开,矩阵元素可以是运算表达式
  1. >> mat = [1 2 3 ; 4 5 6]
  2. mat =
  3.      1     2     3
  4.      4     5     6
复制代码
特殊矩阵的创建

函数作用zeors(m,n)产生                                                  m                                  ×                                  n                                          m\times n                           m×n零矩阵,方阵环境时可以省略第二个参数zeros(size(A))产生与矩阵A同样巨细的零矩阵eye(m,n)构建单位矩阵ones(m,n)构建全1矩阵randi([a, b], m, n)元素在[a, b]之间的                                                  m                                  ×                                  n                                          m\times n                           m×n随机矩阵
  1. >> zeros(3,4)
  2. ans =
  3.      0     0     0     0
  4.      0     0     0     0
  5.      0     0     0     0
  6. >> eye(3,4)
  7. ans =
  8.      1     0     0     0
  9.      0     1     0     0
  10.      0     0     1     0
  11. >> ones(3,4)
  12. ans =
  13.      1     1     1     1
  14.      1     1     1     1
  15.      1     1     1     1
  16. >> randi([10,50], 5 ,5)
  17. ans =
  18.     47    21    49    27    11
  19.     15    32    49    47    44
  20.     47    49    29    42    48
  21.     35    49    42    49    37
  22.     13    16    15    36    41
复制代码
利用 M 文件或 TXT 文件建立矩阵

可以通过 .m 脚本文件或 .txt 文本文件创建较大、复杂的矩阵。这样做的好处是便于维护、复用或从外部导入数据。
使用 .m 文件创建矩阵


  • 打开 MATLAB 自带的 Editor 或使用任意文本编辑器。
  • 输入如下内容(界说一个矩阵 mymat):
    1. % 文件名:mymatrix.m
    2. mymat = [
    3.     1, 2, 3;
    4.     4, 5, 6;
    5.     7, 8, 9
    6. ];
    复制代码
  • 将文件保存为 mymatrix.m,并确保保存在 MATLAB 当前工作目次中。
    1. >> mymatrix
    2. mymat =
    3.      1     2     3
    4.      4     5     6
    5.      7     8     9
    复制代码
使用 .txt 文件读取纯数据矩阵

实用于数据文件中只包罗纯数字(不含变量名)。

  • 创建一个名为 mymatrix.txt 的文本文件,内容如下:
    1. 1 2 3
    2. 4 5 6
    3. 7 8 9
    复制代码
  • 在 MATLAB 中读取该文件内容为矩阵:
    1. mymat = load('mymatrix.txt');
    复制代码
    或使用更通用的函数:
    1. mymat = readmatrix('mymatrix.txt');
    复制代码
矩阵切片

MATLAB 中的矩阵切片(索引)操作

矩阵的切片操作使用括号 ( , ) 体现,其中:


  • 前一部分体现 行的索引
  • 后一部分体现 列的索引
  • 可以使用数字、向量、冒号 :、关键字 end 等方式指定位置。
基本语法

  1. A(i, j)           % 取第 i 行第 j 列的元素
  2. A(i, :)           % 取第 i 行的所有列
  3. A(:, j)           % 取第 j 列的所有行
  4. A(m:n, p:q)       % 取第 m 到 n 行、第 p 到 q 列的子矩阵
  5. A([1 3], [2 4])   % 取第 1、3 行 和第 2、4 列交叉形成的子矩阵
  6. A(end, :)         % 取最后一行的所有列
  7. A(:, end-1:end)   % 取最后两列的所有行
复制代码
  1. >> A = [1 2 3; 4 5 6; 7 8 9]
  2. A =
  3.      1     2     3
  4.      4     5     6
  5.      7     8     9
  6. >> A(2, 3)
  7. ans =
  8.      6
  9. >> A(1, :)
  10. ans =
  11.      1     2     3
  12. >> A(:, 2)
  13. ans =
  14.      2
  15.      5
  16.      8
  17. >> A(1:2, 2:3)
  18. ans =
  19.      2     3
  20.      5     6
  21. >> A([1 3], [1 3])
  22. ans =
  23.      1     3
  24.      7     9
  25. >>
  26. >> A(end, :)
  27. ans =
  28.      7     8     9
  29. >> A(:, end-1:end)
  30. ans =
  31.      2     3
  32.      5     6
  33.      8     9
复制代码
矩阵运算

数的运算是矩阵运算的特例,以是一并包罗在其中。
1. 基础算术运算符

运算符寄义阐明+加法元素逐项相加,要求维度一致-减法元素逐项相减,要求维度一致*矩阵乘法矩阵内积规则,A的列= B的行/右除A/B ≡ A * inv(B)\左除A\B ≡ inv(A) * B^矩阵幂A^n 为 n 次矩阵乘法
  1. >> A = [1 2; 3 4], B = [5 6; 7 8]
  2. A =
  3.      1     2
  4.      3     4
  5. B =
  6.      5     6
  7.      7     8
  8. >> A + B
  9. ans =
  10.      6     8
  11.     10    12
  12. >> A - B
  13. ans =
  14.     -4    -4
  15.     -4    -4
  16. >> A * B
  17. ans =
  18.     19    22
  19.     43    50
  20. >> A / B
  21. ans =
  22.     3.0000   -2.0000
  23.     2.0000   -1.0000
  24. >> A / B * B
  25. ans =
  26.      1     2
  27.      3     4
  28. >> A \ B
  29. ans =
  30.     -3    -4
  31.      4     5
  32. >> A * (A \ B)
  33. ans =
  34.      5     6
  35.      7     8
  36. >> A ^ 2
  37. ans =
  38.      7    10
  39.     15    22
复制代码
2. 点运算符(逐元素操作)

运算符寄义.*元素乘法./元素右除.\元素左除.^元素幂
  1. >> A = [1 2; 3 4], B = [5 6; 7 8]
  2. A =
  3.      1     2
  4.      3     4
  5. B =
  6.      5     6
  7.      7     8
  8. >> A .* B
  9. ans =
  10.      5    12
  11.     21    32
  12. >> A ./ B
  13. ans =
  14.     0.2000    0.3333
  15.     0.4286    0.5000
  16. >> A .\ B
  17. ans =
  18.     5.0000    3.0000
  19.     2.3333    2.0000
  20. >> A .^ 2
  21. ans =
  22.      1     4
  23.      9    16
复制代码
3. 常用数学函数

下述函数若作用于矩阵则是对每一元素进行的。
函数阐明sqrt(x)平方根pow2(x)2的幂log(x)自然对数log2(x)2为底的对数log10(x)10为底的对数exp(x)e为底的指数sign(x)符号函数mod(x,y)余数,x为负数时是向负数的余数rem(x,y)余数,x为负数时是向正数的余数round(x)四舍五入floor(x)向下取整ceil(x)向上取整fix(x)向 0 方向取整conj(x)复数共轭real(x)复数实部imag(x)复数虚部abs(x)模angle(x)相角
  1. >> sqrt([4 9])
  2. ans =
  3.      2     3
  4. >> pow2([1 2 3])
  5. ans =
  6.      2     4     8
  7. >> log(exp(1))
  8. ans =
  9.      1
  10. >> log2(8)
  11. ans =
  12.      3
  13. >> log10(100)
  14. ans =
  15.      2
  16. >> exp(1)
  17. ans =
  18.     2.7183
  19. >> sign([-3 0 4])
  20. ans =
  21.     -1     0     1
  22. >> mod(-7, 3)
  23. ans =
  24.      2
  25. >> rem(-7, 3)
  26. ans =
  27.     -1
  28. >> round(3.6)
  29. ans =
  30.      4
  31. >> round(3.4)
  32. ans =
  33.      3
  34. >> floor(3.6)
  35. ans =
  36.      3
  37. >> ceil(3.2)
  38. ans =
  39.      4
  40. >> fix(-3.7)
  41. ans =
  42.     -3
  43. >> fix(3.7)
  44. ans =
  45.      3
  46. >> conj(1+2i)
  47. ans =
  48.    1.0000 - 2.0000i
  49. >> real(1+2i)
  50. ans =
  51.      1
  52. >> imag(1+2i)
  53. ans =
  54.      2
  55. >> abs(3+4i)
  56. ans =
  57.      5
  58. >> angle(pi/4)
  59. ans =
  60.      0
复制代码
4. 矩阵变更函数

函数阐明transpose(A) 或 A.'非共轭转置fliplr(A)左右翻转flipud(A)上下翻转flipdim(A,1)将矩阵按第一个维度进行翻转rot90(A)旋转90度diag(A)对角矩阵rref(A)最简行蹊径形矩阵tril(A)下三角矩阵triu(A)上三角矩阵reshape(A,m,n)将矩阵A重新排成                                                  m                                  ×                                  n                                          m\times n                           m×n的矩阵
  1. >> A = [1 2; 3 4]
  2. A =
  3.      1     2
  4.      3     4
  5. >> transpose(A)
  6. ans =
  7.      1     3
  8.      2     4
  9. >> A.'
  10. ans =
  11.      1     3
  12.      2     4
  13. >> fliplr(A)
  14. ans =
  15.      2     1
  16.      4     3
  17. >> flipud(A)
  18. ans =
  19.      3     4
  20.      1     2
  21. >> flipdim(A, 1)
  22. ans =
  23.      3     4
  24.      1     2
  25. >> flipdim(A, 2)
  26. ans =
  27.      2     1
  28.      4     3
  29. >> rot90(A)
  30. ans =
  31.      2     4
  32.      1     3
  33. >> diag(A)
  34. ans =
  35.      1
  36.      4
  37. >> rref(A)
  38. ans =
  39.      1     0
  40.      0     1
  41. >> tril(A)
  42. ans =
  43.      1     0
  44.      3     4
  45. >> triu(A)
  46. ans =
  47.      1     2
  48.      0     4
  49. >> reshape(A, 1, 4)
  50. ans =
  51.      1     3     2     4
复制代码
5. 矩阵运算函数

函数寄义det(A)行列式inv(A)逆矩阵rank(A)矩阵秩trace(A)对角线元素之和norm(A)矩阵范数cond(A)矩阵条件数[V,D]=eig(A)矩阵的特性值分解,V体现特性向量,D体现特性值[Q,R]=qr(A)矩阵的QR分解[L,U]=lu(A)矩阵的LU分解
  1. >> det([1 2; 3 4])
  2. ans =
  3.     -2
  4. >> inv([1 2; 3 4])
  5. ans =
  6.    -2.0000    1.0000
  7.     1.5000   -0.5000
  8. >> rank([1 2; 2 4])
  9. ans =
  10.      1
  11. >> trace([1 2; 3 4])
  12. ans =
  13.      5
  14. >> norm([3 4])
  15. ans =
  16.      5
  17. >> cond([1 2; 3 4])
  18. ans =
  19.    14.9330
  20. >> [V,D] = eig([1 2; 3 4])
  21. V =
  22.    -0.8246   -0.4160
  23.     0.5658   -0.9094
  24. D =
  25.    -0.3723         0
  26.          0    5.3723
  27. >> [Q,R] = qr([1 2; 3 4])
  28. Q =
  29.    -0.3162   -0.9487
  30.    -0.9487    0.3162
  31. R =
  32.    -3.1623   -4.4272
  33.          0   -0.6325
  34. >> [L,U] = lu([1 2; 3 4])
  35. L =
  36.     0.3333    1.0000
  37.     1.0000         0
  38. U =
  39.     3.0000    4.0000
  40.          0    0.6667
复制代码
6.向量内积/外积

函数重要作用dot点积cross叉积
  1. >> dot([1 2 3], [4 5 6])
  2. ans =
  3.     32
  4. >> cross([1 2 3], [4 5 6])
  5. ans =
  6.     -3     6    -3
复制代码
7.其他函数

函数重要作用向量活动矩阵活动(默认)min/max极值单值每列最值mean平均值单值每列均值median中位数单值每列中位数std尺度差单值每列尺度差diff相邻差分长度减1每列差分sort升序排序排序向量每列排序sum求和总和每列求和prod乘积累乘每列累乘cumsum累加和向量累加每列累加cumprod累乘积向量累乘每列累乘length最大维长度向量长度二维矩阵为max(行,列)size维度信息[1,n][m,n]norm向量/矩阵范数L2 范数谱范数(最大奇异值)
  1. >> A = reshape(1:16, 4, 4)
  2. A =
  3.      1     5     9    13
  4.      2     6    10    14
  5.      3     7    11    15
  6.      4     8    12    16
  7. >> min(A)
  8. ans =
  9.      1     5     9    13
  10. >> max(A)
  11. ans =
  12.      4     8    12    16
  13. >> mean(A)
  14. ans =
  15.     2.5000    6.5000   10.5000   14.5000
  16. >> median(A)
  17. ans =
  18.     2.5000    6.5000   10.5000   14.5000
  19. >> std(A)
  20. ans =
  21.     1.2910    1.2910    1.2910    1.2910
  22. >> diff(A)
  23. ans =
  24.      1     1     1     1
  25.      1     1     1     1
  26.      1     1     1     1
  27. >> sort(A)
  28. ans =
  29.      1     5     9    13
  30.      2     6    10    14
  31.      3     7    11    15
  32.      4     8    12    16
  33. >> sum(A)
  34. ans =
  35.     10    26    42    58
  36. >> prod(A)
  37. ans =
  38.           24        1680       11880       43680
  39. >> cumsum(A)
  40. ans =
  41.      1     5     9    13
  42.      3    11    19    27
  43.      6    18    30    42
  44.     10    26    42    58
  45. >> cumprod(A)
  46. ans =
  47.            1           5           9          13
  48.            2          30          90         182
  49.            6         210         990        2730
  50.           24        1680       11880       43680
  51. >> length(A)
  52. ans =
  53.      4
  54. >> size(A)
  55. ans =
  56.      4     4
  57. >> norm(A)
  58. ans =
  59.    38.6227
复制代码
字符串

创建字符串以及字符串数组

单引号将内容括起来体现一个字符串,以ASC2码存储
  1. % 创建字符串
  2. a = 'ABC'
  3. % 创建字符串数组,不可以使用单引号,否则输出会是字符串
  4. >> a = ["hello" "word"]
  5. a =
  6.   1x2 string 数组
  7.     "hello"    "word"
  8. >> a = ['hello', 'word']
  9. a =
  10.     'helloword'
复制代码
字符函数

函数寄义abs('ABC')返回字符串中每个字符的 ASCII 码(与 double 等价)double('ABC')返回字符串中每个字符的 ASCII 码char([65 66 67])将 ASCII 数字转换为对应字符,结果为 'ABC'int2str(123)将整数转换为字符串 '123'num2str(3.14)将数值(整数或浮点数)转换为字符串 '3.14'str2num('1.23 4.56')将字符串解析为数值向量 [1.23 4.56]strcat('ab', 'cd')字符串拼接,结果为 'abcd',主动去除尾部空格strvcat('abc', 'defg')垂直拼接字符矩阵,按最大长度补空格strcmp('abc','abc')比较字符串是否完全相同,返回 1(true)或 0(false)strncmp('abcdef','abcxyz',3)比较字符串前3个字符是否相同,返回逻辑值strrep('cat','a','o')将字符串中的 'a' 替换为 'o',结果为 'cot'strmatch('he', ['hello','hero','hi'])返回全部以 'he' 开头的字符串索引eval()将字符串明白为代码实行
  1. >> abs('A')
  2. ans =
  3.     65
  4. >> double('A')
  5. ans =
  6.     65
  7. >> char(65)
  8. ans =
  9.     'A'
  10. >> int2str(123)
  11. ans =
  12.     '123'
  13. >> num2str(3.14)
  14. ans =
  15.     '3.14'
  16. >> str2num('1.23 4.56')
  17. ans =
  18.     1.2300    4.5600
  19. >> strcat('ab', 'cd')
  20. ans =
  21.     'abcd'
  22. >> strcat('ab', 'cd ')
  23. ans =
  24.     'abcd'
  25. >> strvcat('abc', 'defg')
  26. ans =
  27.   2x4 char 数组
  28.     'abc '
  29.     'defg'
  30. >> strcmp('abc', 'abc')
  31. ans =
  32.   logical
  33.    1
  34. >> strcmp('abc', 'ab')
  35. ans =
  36.   logical
  37.    0
  38. >> strncmp('abcdef', 'abcxyz', 3)
  39. ans =
  40.   logical
  41.    1
  42. >> strncmp('abcdef', 'abcxyz', 4)
  43. ans =
  44.   logical
  45.    0
  46. >> strrep('cat', 'a', 'o')
  47. ans =
  48.     'cot'
  49. >> strmatch('he', 'hi')
  50. ans =
  51.      []
  52. >> strmatch('he', 'he')
  53. ans =
  54.      1
  55. >> strmatch('he', ["he" "him"; "s" "hem"])
  56. ans =
  57.      1
  58.      4
  59. >> strmatch('he', ["hello";"hero";"hi"])
  60. ans =
  61.      1
  62.      2
  63. >> eval("a=2")
  64. a =
  65.      2
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-6-27 19:54 , Processed in 0.080858 second(s), 29 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表