Version: Next

基本操作

命令行

  • workspace:变量
  • command history:命令历史
  • current folder:当前文件夹
  • command window:命令窗口
1 + 1 # 回车执行

image-20220102215041839

脚本..(省略)

基本运算命令

  • + - * / ^
  • 计算结果会用 ans 显示

  • # + 法为例
    >> 2 + 1
    ans =
    3
  • 运算符优先级按常规优先级处理

练习

image-20220102215516552

>> cos(((1 + 2 + 3 + 4) ^ 3 / 5) ^ 0.5)
ans =
-0.0050

image-20220102220144291

>> sin(pi ^ 0.5) + log(tan(1))
ans =
1.4228

函数查文档

看文档

matlab 右上角直接搜索

输入命令 help xxx

  • help sin —— 查看 sin 函数

函数嵌套

说白了就是利用 变量 简化函数调用

>> cos(pi)
sin(ans)
ans =
-1
ans =
-0.8415
  • 上述例子种,利用了 ans 作为中间变量

matlab 变量

所有变量会显示在 workspace,可以看到 ans 本身就是一个变量

  • matlab 变量不需要 声明
  • 命名规则按常规处理
    • 大小写敏感
    • 不能以数字开头
  • 赋值号 =
  • 等号 ==
  • 不等号 ~=

变量类型

默认类型为 double

  • logical(布尔)
  • char 字符
  • numeric数字
    • int8 uint8 single double
    • int16 uint 16
    • int32 uint32
    • int64 uint64
  • cell(元胞类型,没见过)
  • struct 结构体

如何查看变量的类型

who # 查看所有变量
whos # 查看所有变量所有信息
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
a1 1x1 8 double
a2 1x1 8 double
ans 1x1 1 logical

内置关键字

  • ans
  • ij 复变函数
  • Inf:无限大 默认为 1/0 的结果
  • eps:一批斯隆
  • NaN:同 JavaScript 不是个数 inf/inf = NaN
  • pi:Π
# 查看 keyword 的命令
iskeyword

删除变量的指令

# 删除变量
clear 变量名
# 删除所有变量
clear

格式化输出

# 当作 long 显示变量
>> format long
>> pi
ans =
3.141592653589793
>> format longE
>> pi
ans =
3.141592653589793e+00
  • short 4位
  • long 15位
  • longE 科学计数法的 long
  • shortE 科学计数法的 short
  • hex 十六进制
  • rat 分式

练习

>> format rat
>> (3/13) + (4/14) + (5/15)
ans =
232/273

; 分号

; 结尾的语句,其结果不会被显示在命令行窗口中

>> a = 10;
>>

清空命令行窗口

# clear command window display
clc

矩阵输入

行向量

>> a = [1 2 3 4]
a =
1 2 3 4

列向量

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

尝试计算 a * bb * a

>> a * b
ans =
30
>> b * a
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16

矩阵

  • ; 换行
>> A = [1 21 6; 5 17 9; 31 2 7]
A =
1 21 6
5 17 9
31 2 7

矩阵索引

  • 用 索引 index 访问矩阵中的 元素
  • 方法一:变量名(下标),下标从 1 开始!!,对于高维矩阵使用 变量名(维度1,维度2,维度3.....)
>> A = [1 2 3 4; 5 6 7 8]
A =
1 2 3 4
5 6 7 8
>> A(1 , 3)
ans =
3
  • 方法二:按列,每列从上向下,列从左往右,按升序排列,下标从 1 开始
>> A = [1 2 3 4; 5 6 7 8]
A =
1 2 3 4
5 6 7 8
>> A(5)
ans =
3

传递一组下标

A([下标1,下标2,下标3....])

传递一组下标

A([行下标], [列下标])

练习1

对于矩阵

image-20220104224331408

  1. A(8)
    • 从最左侧第一列开始,从上向下一个一个数,从1开始,数到第8个
A =
1 21 6
5 17 9
31 2 7
>> A(8)
ans =
9
  1. A([1 3 5])
    • 数第1、3、5个
>> A([1 3 5])
ans =
1 31 17
  1. A([1 3; 13])
  • 先取 第一个、第三个 然后 ; 换行,再取第一个和第三个
>> A([1 3; 1 3])
ans =
1 31
1 31
  1. A(3, 2)
    • 获取第三行第二列那个元素
>> A(3, 2)
ans =
2
  1. A([1 3], [1 3])
  • 第一行第三行,第一列第三列,相交出来的元素(4个)
>> A([1 3], [1 3])
ans =
1 6
31 7

修改矩阵元素的值

  • 索引,然后对索引位置赋值
变量名(下标) = 值

练习2

1分12

等差数据输入

  • 生成 1 2 3 4 ..... 100
A = [1:100]
  • 生成 1 3 5 7 ... 99
    • 第二个数是公差
B = [1 : 2 : 99]

练习3

  1. B = 1:5
    • 生成 1 2 3 4 5
>> B = 1:5
B =
1 2 3 4 5
  1. B = 1 : 2 : 5
    • 生成 1 3 5
>> B = 1 : 2 : 5
B =
1 3 5
  1. B = [1 : 5; 2 : 3 : 15; -2 : 0.5 : 0]
    • 第一行 1 2 3 4 5
    • 第二行 2 5 8 11 14
    • 第三行 -2 -1.5 -1 -0.5 0
>> B = [1 : 5; 2 : 3 : 15; -2 : 0.5 : 0]
B =
1.0000 2.0000 3.0000 4.0000 5.0000
2.0000 5.0000 8.0000 11.0000 14.0000
-2.0000 -1.5000 -1.0000 -0.5000 0
  1. str = 'a' : 2 : 'z'
>> str = 'a' : 2 : 'z'
str =
'acegikmoqsuwy'

选中整行

  • 例如 A 的第三行
A(3, :)
  • 将第三行删除
    • 赋值为空行向量
A(3, :) = []

列同理

矩阵拼接

  • 合并 A、B 矩阵
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = [9 9 ; 9 9]
B =
9 9
9 9
>> F = [A B]
F =
1 2 9 9
3 4 9 9
>> F = [A ; B]
F =
1 2
3 4
9 9
9 9

矩阵、向量四则运算

+ - * / ^ . '

.* 表示点乘

./ 表示点除

.^ 表示点幂

':转置

特殊矩阵

image-20220104222913831

练习4

max(矩阵) —— 每列最大值

>> A = [1 2 3; 0 5 6; 7 0 9]
A =
1 2 3
0 5 6
7 0 9
>> max(A)
ans =
7 5 9

max(矩阵') —— 每行最大值;就是先把矩阵转置再求列最大

>> max(A')
ans =
3 6 9

max(max(矩阵)) —— 整个矩阵的最大值

>> max(max(A))
ans =
9

sort(矩阵) —— 每列内进行排序

>> sort(A)
ans =
0 0 3
1 2 6
7 5 9

sortrows —— 用第一列的元素进行排序,后续的列跟随第一列的元素一起移动,也就是保持每行元素不变

>> sortrows(A)
ans =
0 5 6
1 2 3
7 0 9

size —— 返回矩阵有 xx 行 xx 列

>> size(A)
ans =
3 3

length —— 针对向量的长度,因为向量维度1

find(A == 5) 返回 5 这个元素的下标,用的是按列从上向下数数字的方式

>> find(A == 5)
ans =
5