【MATLAB】 01 基本操作与数组输入
文章目录
- 01 基本操作与数组输入
- Intro
- 认识 MATLAB 操作界面
- 像使用计算器一样使用 MATLAB
- Exercise
- 嵌套函数
- 变量
- 数据类型
- `who` 与 `whos`
- 特殊变量与常量
- 标识符查找顺序
- 指定数字格式
- 命令行下使用
- 一些常用的命令
- 数组输入
- 行向量 Row vector
- 列向量 Column vector
- 使用下标获取矩阵中的元素
- Exercise
- 冒号运算符
- 矩阵拼接
- 矩阵运算
- 一些特殊的矩阵
- 矩阵相关的函数
01 基本操作与数组输入
Intro
认识 MATLAB 操作界面
可以通过 Layout 选择需要显示的窗口及布局
使用 MATLAB 编程有两种方法
- 命令行 (命令窗口)
- 脚本 (
.m
文件)
像使用计算器一样使用 MATLAB
运算符
+
,-
,*
,/
,^
计算的结果 以
ans
显示
优先级
- 同一优先级从左到右
- 优先级为
- Parenthesis (
()
) - Power (
^
) - Multiplication and division (
*
,/
) - Addition and subtraction (
+
,-
)
- Parenthesis (
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
who
与 whos
使用命令 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 numberInf
: ∞ \infty ∞eps
: 2.2207 e − 016 2.2207e-016 2.2207e−016NaN
: not a numberpi
: π \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' }
标识符查找顺序
- Variable 变量
- Built-in function 内置函数
- Subfunction 子函数
- Private function 私有函数
- MEX-file
- P-file
- 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=⎣ ⎡153121172697⎦ ⎤
>> 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=⎣ ⎡153121172697⎦ ⎤⟹⎣ ⎡153176170697⎦ ⎤⟹⎣ ⎡1531000007⎦ ⎤⟹[150000]
提示 请先看完下面的冒号运算符
A(3,:)
表示选中第三列的全部
A(3,:)=[]
让第三列等于一个空向量, 就是删除第三列
冒号运算符
如果想要创建这样的数组: A = [ 1 2 3 ⋯ 100 ] A = \begin{bmatrix}1&2&3&\cdots&100\end{bmatrix} A=[123⋯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=[123⋯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=⎣ ⎡149258347⎦ ⎤B=⎣ ⎡321343391⎦ ⎤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))
- 嵌套使用可以找出 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 基本操作与数组输入相关推荐
- Matlab —— 02 基本操作与矩阵输入
一.基本操作 1. help 功能:便于快速了解指令的使用 ex: 查询 pi 的简明介绍 Question 通过 matlab 计算出下列算式结果 Answer (1) (2) 或 (3) (4) ...
- Matlab学习——基本操作与矩阵输入
一.基础操作 1. 清除MATLAB里面的valuable clear valuable名字 2. MATLAB里面的keyword pi -- 圆周率π Inf -- ∞ NaN -- not a ...
- matlab:基本操作与矩阵输入
学习素材:MATLAB教程_台大郭彦甫(14课)原视频补档 MATLAB教程_台大郭彦甫(14课)原视频补档_哔哩哔哩_bilibili (部分素材使用视频截图) 目录 一.基本运算 二.关键字 三. ...
- 关于MATLAB fplot 出现matlab 警告: 函数处理数组输入时行为异常。要改善性能,请将您的函数正确向量化,以返回大小和形状与输入参数相同的输出。
其原因是因为我试用 heaviside()函数时 将其首字母的 h 敲成了 H,然后出错 注意里面的参数不能够用t(我也不知道为什么)
- [MATLAB]基本操作与矩阵输入
基本操作与矩阵输入 基本操作 基本的四则运算 嵌入函数 复数运算 变量 变量基本规则 查询变量 将内置函数更改意义 Format 符号 矩阵及向量 矩阵的输入 索引 矩阵元素的替换 :操作符 增广矩阵 ...
- MATLAB(一)基本操作与矩阵输入
文章目录 前言 一.Matlab视窗 二.基本操作与矩阵输入 1. 把MATLAB当做计算机 2. 初等数学函数 Exercise练习 2. 嵌入函数 3. 特殊变量和常量 4.MATLAB调用优先 ...
- Matlab 基础01 - 多维数组的排列转换和Permute 函数
前言: 本章通过Matlab官网的例子,介绍Matlab Permute函数的数组维度置换功能:由于官网的说明比较晦涩难懂,所以,这里用自己的语言和理解重新组织了一下. 1 语法: B = permu ...
- Excel day 01 基本操作1
Excel day 01 基本操作1 数据分析流程可以概括为:数据理解.提取数据.数据清洗.数据分析.数据可视化.撰写报告. excel基本操作 保护 限制其他用户对文件的内容进行修改 工作簿:整个文 ...
- c语言程序输入n个数字排序,C语言数组 输入n个数据(n由操作者从键盘输入,n20)怎么输,要排序...
C语言数组 输入n个数据(n由操作者从键盘输入,n<20)怎么输,要排序 答案:3 信息版本:手机版 解决时间 2019-10-04 21:28 已解决 2019-10-03 21:17 最佳 ...
最新文章
- RDKit | 基于主成分分析可视化(DrugBank)类药性的化学空间
- python入门经典例题-Python入门经典练习题
- 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
- 基于能量或过零率的实时语音分割--学习笔记
- 全球及中国多非利特原料药行业发展模式分析及投资前景规划报告2022-2027年版
- BZOJ 2655 calc (组合计数、DP、多项式、拉格朗日插值)
- php软删除代码,PHP laeavel软删除以及软删除还原 易错点
- Rust最受喜爱却少有人用,Python仅排第六,2021全球开发者调查报告出炉
- 吴恩达点赞的deeplearning.ai课程总结
- 图的深度优先搜索遍历
- Java性能优化的七个方向
- echarts地图map下钻到镇街、KMZ文件转GeoJson、合成自定义区域
- linux内核2.6.3x--Executable file formats / Emulations、 Networking support
- 一位,四位数码管引脚图
- 计算机系统结构模拟试卷3,计算机系统结构全真模拟试卷.pdf
- 机器学习sklearn之支持向量回归(SVR)
- 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
- FS4100 锂电充电管理IC输入12V给8.4V充电IC
- element时间组件在苹果回显无效果
- Netty网络编程第七卷