文章目录

  • 01 基本操作与数组输入
    • Intro
      • 认识 MATLAB 操作界面
    • 像使用计算器一样使用 MATLAB
    • Exercise
    • 嵌套函数
    • 变量
      • 数据类型
        • `who` 与 `whos`
      • 特殊变量与常量
      • 标识符查找顺序
      • 指定数字格式
    • 命令行下使用
      • 一些常用的命令
    • 数组输入
      • 行向量 Row vector
      • 列向量 Column vector
      • 使用下标获取矩阵中的元素
    • Exercise
      • 冒号运算符
      • 矩阵拼接
      • 矩阵运算
      • 一些特殊的矩阵
      • 矩阵相关的函数

01 基本操作与数组输入

Intro

认识 MATLAB 操作界面

可以通过 Layout 选择需要显示的窗口及布局

使用 MATLAB 编程有两种方法

  • 命令行 (命令窗口)
  • 脚本 (.m 文件)

像使用计算器一样使用 MATLAB

  • 运算符 +,-,*,/,^

  • 计算的结果 以 ans 显示

  • 优先级

    • 同一优先级从左到右
    • 优先级为
      1. Parenthesis (())
      2. Power (^)
      3. Multiplication and division (*,/)
      4. Addition and subtraction (+,-)

Exercise

Calculate:
cos ⁡ ( ( 1 + 2 + 3 + 4 ) 3 5 ) sin ⁡ ( π ) + ln ⁡ ( tan ⁡ ( 1 ) ) 2 3.5 × 1.7 e sin ⁡ ( 10 ) \begin{aligned} &\cos \left(\sqrt{\frac{(1+2+3+4)^{3}}{5}}\right) \\ \\ &\sin (\sqrt{\pi})+\ln (\tan (1)) \\ \\ &2^{3.5 \times 1.7} \\ \\ &e^{\sin (10)} \end{aligned} ​cos(5(1+2+3+4)3​ ​)sin(π ​)+ln(tan(1))23.5×1.7esin(10)​

嵌套函数

sin(cos(pi))

与下方等价

cos(pi)
sin(ans)

多行代码 可以合为单行代码执行

MATLAB 先计算cos(pi) 并将计算结果储存到变量 ans
在计算 sin(ans) 时, 与 sin(cos(pi)) 等价

变量

  • 变量在赋值前, 不需要先声明
  • 单等号 = 是赋值运算符(Assignment Operator)
    • 将等号右边的值 赋值给等号左边
  • 大小写敏感
  • 变量命名不能以数字开始, 但可以包含数字

数据类型

  • logical
  • char
  • numeric
    • int8, int16, int32, int64, uint8, uint16, uint32, uint64
    • single
    • double
  • cell
  • struct

whowhos

使用命令 who 可以查看当前变量
使用命令 whos 可以查看当前变量及其数据类型

>> a = 5a =5>> a * 6ans =30>> whoYour variables are:a    ans  >> whosName      Size            Bytes  Class     Attributesa         1x1                 8  double              ans       1x1                 8  double

特殊变量与常量

  • ans
  • i,j : complex number
  • Inf : ∞ \infty ∞
  • eps : 2.2207 e − 016 2.2207e-016 2.2207e−016
  • NaN : not a number
  • pi : π \pi π
>> x = 1/0x =Inf>> x = inf / infx =NaN

以上均是关键字
使用命令 iskeyword 显示关键字

>> iskeywordans =20×1 cell array{'break'     }{'case'      }{'catch'     }{'classdef'  }{'continue'  }{'else'      }{'elseif'    }{'end'       }{'for'       }{'function'  }{'global'    }{'if'        }{'otherwise' }{'parfor'    }{'persistent'}{'return'    }{'spmd'      }{'switch'    }{'try'       }{'while'     }

标识符查找顺序

  1. Variable 变量
  2. Built-in function 内置函数
  3. Subfunction 子函数
  4. Private function 私有函数
    1. MEX-file
    2. P-file
    3. M-file

例如:

>> cos='This String.';
>> cos(8) % 字符向量的第8个元素ans ='r'>> clear % 清除全部变量
>> cos(8)ans =-0.1455

注意: 不要使用 内置函数 或 关键字 作为变量名

指定数字格式

默认数字格式为 short 显示小数点后四位

使用 format [style] 指定数字格式

Style Result Example
short Short, fixed-decimal format with 4 digits after the decimal point. 3.1416
long Long, fixed-decimal format with 15 digits after the decimal point for double values, and 7 digits after the decimal point for single values. 3.141592653589793
shortE Short scientific notation with 4 digits after the decimal point. 3.1416e+00
longE Long scientific notation with 15 digits after the decimal point for double values, and 7 digits after the decimal point for single values. 3.141592653589793e+00
bank Currency format with 2 digits after the decimal point. 3.14
hex Hexadecimal representation of a binary double-precision number. 400921fb54442d18
rat Ratio of small integers. 以有理数形式显示结果 355/113

命令行下使用

观察以下两个命令的不同

>> a = 10
>> b = 10;

命令后加 ; 表示不向终端显示结果

与其他终端相同, 使用 ↑ \uparrow ↑ 快速输入之前的命令

一些常用的命令

  • clc 清空命令窗口
  • clear 清除工作区的所有变量
    • 谨慎使用, 建议只删除不需要的变量 clear [variable]
  • who 查看工作区的变量
  • whos 查看工作区变量的详细信息

数组输入

Array (Vector and Matrix) Input

行向量 Row vector

>> a = [1 2 3 4]

列向量 Column vector

>> b = [1; 2; 3; 4]

>> a * bans =30>> b * aans =1     2     3     42     4     6     83     6     9    124     8    12    16
  • Key in the following matrix in MATLAB

A = [ 1 21 6 5 17 9 31 2 7 ] A= \begin{bmatrix} 1&21&6\\ 5&17&9\\ 31&2&7 \end{bmatrix} A=⎣ ⎡​1531​21172​697​⎦ ⎤​

>> A = [1 21 6; 5 17 9; 31 2 7]A =1    21     65    17     931     2     7

使用下标获取矩阵中的元素

注意: 与其他编程语言中不同, MATLAB 中向量的下标从 1 开始

>> A = [1 21 6; 5 17 9; 31 2 7]A =1    21     65    17     931     2     7>> A(8)ans =9>> A([1 3 5])ans =1    31    17>> A([1 3; 1 3])ans =1    311    31>> A(3,2)ans =2>> A([1 3], [1 3])ans =1     631     7

观察以上命令运行的结果 可以看出 MATLAB 获取矩阵中元素的方法

  • 没有逗号

    • A([index]) 从上往下, 从左往右 对元素从 1 开始标号
    • A([1 3 5]) 取出下标为 1 3 5 的元素, 结果为数组
    • A([1 3; 1 3]) 取出下标为 1 3 的元素 放在矩阵的第一行, 再取出下标为 1 3 的元素 放在矩阵的第二行

  • 有逗号

    • A([row], [column]) 根据(行,列)坐标取出元素
    • A([1 3], [1 3]) 取出 ([行 行], [列 列]) 交点上的元素 放入矩阵, 也就是 第 1, 3 行 与 第 1,3 列 交点上的元素

Exercise

完成以下赋值
A = [ 1 21 6 5 17 9 31 2 7 ] ⟹ [ 1 76 6 5 17 9 31 0 7 ] ⟹ [ 1 0 0 5 0 0 31 0 7 ] ⟹ [ 1 0 0 5 0 0 ] A=\left[\begin{array}{ccc} 1 & 21 & 6 \\ 5 & 17 & 9 \\ 31 & 2 & 7 \end{array}\right] \Longrightarrow\left[\begin{array}{ccc} 1 & 76 & 6 \\ 5 & 17 & 9 \\ 31 & 0 & 7 \end{array}\right]\Longrightarrow\left[\begin{array}{ccc} 1 & 0 & 0 \\ 5 & 0 & 0 \\ 31 & 0 & 7 \end{array}\right]\Longrightarrow \left[\begin{array}{lll} 1 & 0 & 0 \\ 5 & 0 & 0 \end{array}\right] A=⎣ ⎡​1531​21172​697​⎦ ⎤​⟹⎣ ⎡​1531​76170​697​⎦ ⎤​⟹⎣ ⎡​1531​000​007​⎦ ⎤​⟹[15​00​00​]

提示 请先看完下面的冒号运算符

A(3,:)表示选中第三列的全部
A(3,:)=[]让第三列等于一个空向量, 就是删除第三列

冒号运算符

  • 如果想要创建这样的数组: A = [ 1 2 3 ⋯ 100 ] A = \begin{bmatrix}1&2&3&\cdots&100\end{bmatrix} A=[1​2​3​⋯​100​]

  • 可以使用冒号运算符(Colon Operator)

  • 语法
    j : k ⟹ [ j , j + 1 , j + 2 , ⋯ , j + m ] j : i : k ⟹ [ j , j + i , j + 2 i , ⋯ , j + m × i ] \begin{array}{l} j:k&\Longrightarrow&[j,\ j+1,\ j+2,\cdots,\ j+m]\\ j:i:k&\Longrightarrow&[j,\ j+i,\ j+2i,\cdots,j+m\times i] \end{array} j:kj:i:k​⟹⟹​[j, j+1, j+2,⋯, j+m][j, j+i, j+2i,⋯,j+m×i]​
    start:length:end 未指定步长时, 默认步长为 1

A = [ 1 2 3 ⋯ 100 ] A = \begin{bmatrix}1&2&3&\cdots&100\end{bmatrix} A=[1​2​3​⋯​100​] 可以使用 A=[1:100] 创建

矩阵拼接

相同形状的矩阵可以连接在一起

例如:

>> A=[1 2; 3 4];
>> B=[9 9; 9 9];
>> F=[A B]F =1     2     9     93     4     9     9>> F=[A; B]F =1     23     49     99     9

矩阵运算

  • 可以用在矩阵上的运算符 : +,-,*,/,^,.,'

对以下矩阵:
A = [ 1 2 3 4 5 4 9 8 7 ] B = [ 3 3 3 2 4 9 1 3 1 ] a = 2 A=\left[\begin{array}{lll} 1 & 2 & 3 \\ 4 & 5 & 4 \\ 9 & 8 & 7 \end{array}\right] \quad B=\left[\begin{array}{lll} 3 & 3 & 3 \\ 2 & 4 & 9 \\ 1 & 3 & 1 \end{array}\right] \quad a=2 A=⎣ ⎡​149​258​347​⎦ ⎤​B=⎣ ⎡​321​343​391​⎦ ⎤​a=2
做如下运算:

>> AA =1     2     34     5     49     8     7>> BB =3     3     32     4     91     3     1>> aa =2>> A+aans =3     4     56     7     611    10     9>> A/aans =0.5000    1.0000    1.50002.0000    2.5000    2.00004.5000    4.0000    3.5000>> A./aans =0.5000    1.0000    1.50002.0000    2.5000    2.00004.5000    4.0000    3.5000>> A^aans =36    36    3260    65    60104   114   108>> A.^aans =1     4     916    25    1681    64    49>> A'ans =1     4     92     5     83     4     7>> A+Bans =4     5     66     9    1310    11     8>> A*Bans =10    20    2426    44    6150    80   106>> A.*Bans =3     6     98    20    369    24     7>> A/Bans =0.0714    0.2857    0.21431.1667         0    0.50003.2619   -0.2857   -0.2143>> A./Bans =0.3333    0.6667    1.00002.0000    1.2500    0.44449.0000    2.6667    7.0000

.加上运算符, 表示矩阵对应元素间的运算 而不是矩阵之间的运算
'表示对矩阵求转置

注意: 矩阵不能相除, 这里矩阵间的除法运算 与 A × B − 1 A\times B^{-1} A×B−1 的结果大概相等
也就是表示对一个空间, 先进行 A A A 线性变化, 然后再进行 B B B 线性变化的逆变化

这里涉及到了 线性代数的本质
简要概括为:

  • 矩阵

    • 形式上看, 是一个数表
    • 本质上是对空间施加线性变化
    • 对矩阵求逆(inv())之后再相乘, 表示“还原变化”
  • 行列式
    • 形式上看, 是一个数
    • 本质上是经过 行列式对应矩阵 所代表的线性变化后
      线性空间内图形的 长度(1维)/面积(2维)/体积(3维)/… 变化的倍数
    • 对矩阵求对应行列式的值: det()

一些特殊的矩阵

  • linespace() :
  • eye(n) : 主对角线上全是 1 1 1, 其他地方全为 0 0 0 的 n × n n\times n n×n 矩阵
  • zeros(n1,n2) : n 1 × n 2 n_1\times n_2 n1​×n2​ 零矩阵
  • ones(n1,n2) : n 1 × n 2 n_1\times n_2 n1​×n2​ 单位矩阵
  • diag() : 输入数组, 会将数组元素放在对角线上, 其他元素全为零
  • rand() : 生成随机矩阵

矩阵相关的函数

  • max(A) 找出 A 矩阵中每一列最大的元素 结果为行向量

    • 嵌套使用可以找出 A 矩阵中最大的元素 max(max(A))
  • min() 用法与 max() 一样

  • sum(A) 对 A 每一列的元素求和 结果为行向量

    • 嵌套使用可以得到 A 矩阵中所有元素的和
  • mean(A) 对 A 的每一列求平均数 结果为行向量

    • 嵌套使用可以得到 A 矩阵中所有元素的平均值
  • sort(A) 对 A 的每一列进行排序, 从上到下递增

    • 是列操作
  • sortrows(A) 对 A 的第一列进行排序 同时把对应列所在行也进行移动

    • 例如

      • >> A=[1 2 3; 0 5 6; 7 0 9]A =1     2     30     5     67     0     9>> sortrows(A)ans =0     5     61     2     37     0     9
        
  • size(A) 得到 A 矩阵的阶数 结果为两个数 第一个数为行数 第二个数为列数

  • length(A) 得到 A 向量的长度

  • find(A==[num]) 返回 A 矩阵中等于 [num] 的元素的下标

【MATLAB】 01 基本操作与数组输入相关推荐

  1. Matlab —— 02 基本操作与矩阵输入

    一.基本操作 1. help 功能:便于快速了解指令的使用 ex: 查询 pi 的简明介绍 Question 通过 matlab 计算出下列算式结果 Answer (1) (2) 或 (3) (4) ...

  2. Matlab学习——基本操作与矩阵输入

    一.基础操作 1. 清除MATLAB里面的valuable clear valuable名字 2. MATLAB里面的keyword pi -- 圆周率π Inf -- ∞ NaN -- not a ...

  3. matlab:基本操作与矩阵输入

    学习素材:MATLAB教程_台大郭彦甫(14课)原视频补档 MATLAB教程_台大郭彦甫(14课)原视频补档_哔哩哔哩_bilibili (部分素材使用视频截图) 目录 一.基本运算 二.关键字 三. ...

  4. 关于MATLAB fplot 出现matlab 警告: 函数处理数组输入时行为异常。要改善性能,请将您的函数正确向量化,以返回大小和形状与输入参数相同的输出。

    其原因是因为我试用 heaviside()函数时 将其首字母的 h 敲成了 H,然后出错 注意里面的参数不能够用t(我也不知道为什么)

  5. [MATLAB]基本操作与矩阵输入

    基本操作与矩阵输入 基本操作 基本的四则运算 嵌入函数 复数运算 变量 变量基本规则 查询变量 将内置函数更改意义 Format 符号 矩阵及向量 矩阵的输入 索引 矩阵元素的替换 :操作符 增广矩阵 ...

  6. MATLAB(一)基本操作与矩阵输入

    文章目录 前言 一.Matlab视窗 二.基本操作与矩阵输入 1. 把MATLAB当做计算机 2. 初等数学函数 Exercise练习 2. 嵌入函数 3. 特殊变量和常量 4.MATLAB调用优先 ...

  7. Matlab 基础01 - 多维数组的排列转换和Permute 函数

    前言: 本章通过Matlab官网的例子,介绍Matlab Permute函数的数组维度置换功能:由于官网的说明比较晦涩难懂,所以,这里用自己的语言和理解重新组织了一下. 1 语法: B = permu ...

  8. Excel day 01 基本操作1

    Excel day 01 基本操作1 数据分析流程可以概括为:数据理解.提取数据.数据清洗.数据分析.数据可视化.撰写报告. excel基本操作 保护 限制其他用户对文件的内容进行修改 工作簿:整个文 ...

  9. c语言程序输入n个数字排序,C语言数组 输入n个数据(n由操作者从键盘输入,n20)怎么输,要排序...

    C语言数组 输入n个数据(n由操作者从键盘输入,n<20)怎么输,要排序 答案:3  信息版本:手机版 解决时间 2019-10-04 21:28 已解决 2019-10-03 21:17 最佳 ...

最新文章

  1. RDKit | 基于主成分分析可视化(DrugBank)类药性的化学空间
  2. python入门经典例题-Python入门经典练习题
  3. 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
  4. 基于能量或过零率的实时语音分割--学习笔记
  5. 全球及中国多非利特原料药行业发展模式分析及投资前景规划报告2022-2027年版
  6. BZOJ 2655 calc (组合计数、DP、多项式、拉格朗日插值)
  7. php软删除代码,PHP laeavel软删除以及软删除还原 易错点
  8. Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
  9. 吴恩达点赞的deeplearning.ai课程总结
  10. 图的深度优先搜索遍历
  11. Java性能优化的七个方向
  12. echarts地图map下钻到镇街、KMZ文件转GeoJson、合成自定义区域
  13. linux内核2.6.3x--Executable file formats / Emulations、 Networking support
  14. 一位,四位数码管引脚图
  15. 计算机系统结构模拟试卷3,计算机系统结构全真模拟试卷.pdf
  16. 机器学习sklearn之支持向量回归(SVR)
  17. 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
  18. FS4100 锂电充电管理IC输入12V给8.4V充电IC
  19. element时间组件在苹果回显无效果
  20. Netty网络编程第七卷

热门文章

  1. 【软考二】程序设计语言(做题)
  2. single-shot detection(SSD)目标检测算法详解——(一看就懂系列!!!)
  3. ORA-00054 错误原因分析
  4. js对象转数组可枚举属性和不可枚举属性
  5. python数字转中文_阿拉伯数字转换为中文数字的python实现
  6. Promise.all中对于reject的处理
  7. Alpine安装与使用
  8. python网格交易_网格交易(期货)
  9. 二叉树遍历(递归、非递归)
  10. sd卡tf卡进入spi模式