内容大部分来自MATLAB介绍_w3cschool只是cv一下方便自己查阅
基础内容
常用运算符和特殊字符
| 运算符 |
目的 |
| + |
加;加法运算符 |
| - |
减;减法运算符 |
| * |
标量和矩阵乘法运算符 |
| .* |
数组乘法运算符 |
| ^ |
标量和矩阵求幂运算符 |
| .^ |
数组求幂运算符 |
| \ |
矩阵左除 |
| / |
矩阵右除 |
| .\ |
阵列左除 |
| ./ |
阵列右除 |
| : |
向量生成;子阵提取 |
| ( ) |
下标运算;参数定义 |
| [ ] |
矩阵生成 |
| . |
点乘运算,常与其他运算符联合使用 |
| … |
续行标志;行连续运算符 |
| , |
分行符(该行结果不显示) |
| ; |
语句结束;分行符(该行结果显示) |
| % |
注释标志 |
| _ |
引用符号和转置运算符 |
| ._ |
非共轭转置运算符 |
| = |
赋值运算符 |
特殊变量和常量
| Name |
Meaning |
| ans |
默认的变量名,以应答最近依次操作运算结果 |
| eps |
浮点数的相对误差 |
| i,j |
虚数单位,定义为 i2 = j2 = -1 |
| Inf |
代表无穷大 |
| NaN |
代表不定值(不是数字) |
| pi |
圆周率 |
matlab命名变量
- 名称为字母开头,后可接任意数量的下划线、字母、数字
- 区分大小写
保存工作进度
MATLAB使用save命令保存工作区中的所有变量,然后作为一个扩展名为.mat的文件,在当前目录中。
变量
显示已使用的变量
延伸行
1 2 3 4 5
| initial_velocity = 0; acceleration = 9.8; time = 20; final_velocity = initial_velocity ... + acceleration * time
|
格式命令
| 命令 |
作用 |
| format short |
显示4位小数 |
| format long |
显示16位小数 |
| format bank |
显示两位小数 |
| format rat |
显示有理表达式 |
| format + |
正数 |
创建矩阵
1
| m = [1 2 3; 4 5 6; 7 8 9]
|
结果:
1 2 3 4 5
| m =
1 2 3 4 5 6 7 8 9
|
同理可创建行、列向量。
相关命令
向量、矩阵相关
| 命令 |
作用/目的 |
| cat |
连接数组 |
| find |
查找非零元素的索引 |
| length |
计算元素数量 |
| linspace |
创建间隔向量 |
| logspace |
创建对数间隔向量 |
| max |
返回最大元素 |
| min |
返回最小元素 |
| prod |
计算数组元素的连乘积 |
| reshape |
重新调整矩阵的行数、列数、维数 |
| size |
计算数组大小 |
| sort |
排序每个列 |
| sum |
每列相加 |
| eye |
创建一个单位矩阵 |
| ones |
生成全1矩阵 |
| zeros |
生成零矩阵 |
| cross |
计算矩阵交叉乘积 |
| dot |
计算矩阵点积 |
| det |
计算数组的行列式 |
| inv |
计算矩阵的逆 |
| pinv |
计算矩阵的伪逆 |
| rank |
计算矩阵的秩 |
| rref |
将矩阵化成行最简形 |
| cell |
创建单元数组 |
| celldisp |
显示单元数组 |
| cellplot |
显示单元数组的图形表示 |
| num2cell |
将数值阵列转化为异质阵列 |
| deal |
匹配输入和输出列表 |
| iscell |
判断是否为元胞类型 |
绘图
| 命令 |
作用/目的 |
| axis |
人工选择坐标轴尺寸 |
| fplot |
智能绘图功能 |
| grid |
显示网格线 |
| plot |
生成XY图 |
| print |
打印或绘图到文件 |
| title |
把文字置于顶部 |
| xlabel |
将文本标签添加到x轴 |
| ylabel |
将文本标签添加到y轴 |
| axes |
创建轴对象 |
| close |
关闭当前的绘图 |
| close all |
关闭所有绘图 |
| figure |
打开一个新的图形窗口 |
| gtext |
通过鼠标在指定位置放注文 |
| hold |
保持当前图形 |
| legend |
鼠标放置图例 |
| refresh |
重新绘制当前图形窗口 |
| set |
指定对象的属性,如轴 |
| subplot |
在子窗口中创建图 |
| text |
在图上做标记 |
| bar |
创建条形图 |
| loglog |
创建双对数图 |
| polar |
创建极坐标图像 |
| semilogx |
创建半对数图(对数横坐标) |
| semilogy |
创建半对数图(对数纵坐标) |
| stairs |
创建阶梯图 |
| stem |
创建针状图 |
数据类型
常用的数据类型
| 数据类型 |
描述 |
int8 |
8位有符号整数 |
uint8 |
8位无符号整数 |
int16 |
16位有符号整数 |
uint16 |
16位无符号整数 |
int32 |
32位有符号整数 |
uint32 |
32位无符号整数 |
int64 |
64位有符号整数 |
uint64 |
64位无符号整数 |
single |
单精度数值数据 |
double |
双精度数值数据 |
logical |
逻辑值为1或0,分别代表true和false |
char |
字符数据(字符串作为字符向量存储) |
数据类型确认函数
| 函数 |
描述说明 |
is |
检测状态 |
isa |
确定输入是否是指定类的对象 |
iscell |
确定输入是单元格数组 |
iscellstr |
确定输入是字符串的单元格数组 |
ischar |
确定项目是否是字符数组 |
isfield |
确定输入是否是结构数组字段 |
isfloat |
确定输入是否为浮点数组 |
ishghandle |
确定是否用于处理图形对象句柄 |
isinteger |
确定输入是否为整数数组 |
isjava |
确定输入是否为Java对象 |
islogical |
确定输入是否为逻辑数组 |
isnumeric |
确定输入是否是数字数组 |
isobject |
确定输入是否为MATLAB对象 |
isreal |
检查输入是否为实数数组 |
isscalar |
确定输入是否为标量 |
isstr |
确定输入是否是字符数组 |
isstruct |
确定输入是否是结构数组 |
isvector |
确定输入是否为向量 |
class |
确定对象的类 |
validateattributes |
检查数组的有效性 |
whos |
在工作区中列出变量,其大小和类型 |
运算符
位运算
| 函数 |
目的/作用 |
| bitand(a, b) |
当a、b是一个或数个无符号整数或无符号整数数组,返回参数a和b位和, |
| bitcmp(a) |
a的补码 |
| bitget(a,pos) |
在指定位置pos中获取位,在整数数组a中 |
| bitor(a, b) |
对数a和b按位或 |
| bitset(a, pos) |
a的集合点在一个特定的位置pos |
| bitshift(a, k) |
返回一个移到左K位,相当于乘以2K。K负值对应的位权转移或除以2\ |
K\ |
向负无穷舍入到最近的整数。任何溢出位都被截断。 |
| bitxor(a, b) |
对数a和b按位异或 |
| swapbytes |
交换字节顺序 |
集合运算
| 函数 |
描述 |
| intersect(A,B) |
设置两个数组的交集;返回A和B所共有的值。返回的值按排序顺序排列。 |
| intersect(A,B,’rows’) |
将A和B的每一行作为单个实体处理,并返回A和B的公共行。返回的矩阵的行按排序顺序排列。 |
| ismember(A,B) |
返回与A大小相同的数组,包含1(true),其中A的元素在其他地方的B中找到,它返回0(false)。 |
| ismember(A,B,’rows’) |
将A和B的每一行作为单个实体处理,并返回一个包含1(true)的向量,其中矩阵A的行也是B的行;否则,它返回0(false)。 |
| issorted(A) |
如果A的元素按排序顺序返回逻辑1(true),否则返回逻辑0(false)。输入A可以是向量,也可以是N-by-1或1-by-N的字符串数组。如果A和sort(A)的输出相等,则A被认为是排序的。 |
| issorted(A, ‘rows’) |
如果二维矩阵A的行按排序顺序返回逻辑1(真),否则返回逻辑0(假)。 如果A和排序(A)的输出相等,则认为矩阵A被排序。 |
| setdiff(A,B) |
设置两个数组的差值;返回不在B中的值。返回数组中的值按排序顺序排列。 |
| setdiff(A,B,’rows’) |
将每一行A和B行作为单个实体处理,并返回一个不在B中的行。返回的矩阵的行按排序顺序排列。“行”选项不支持单元格数组。 |
| setxor |
设置两个数组的异或 |
| union |
设置两个数组的并集 |
| unique |
数组中唯一的值 |
语句
条件判断
1 2 3 4
| if (...) .....; .....; end
|
1 2 3 4 5 6 7
| switch(...) case .. ....; ....; case .. .... end
|
- 其他用法与C基本相同
- end后不须跟分号(即使后面还有语句)
循环
for循环
for循环有三种用法:
向量
元素索引
1 2 3
| rv = [1 2 3 4 5 6 7 8 9]; sub_rv = rv(3:7) rv(1)
|
向量转置
1 2
| r = [ 1 2 3 4 ]; tr = r';
|
求向量的模
1 2 3 4
| v = [1: 2: 20]; sv = v.* v; dp = sum(sv); mag = sqrt(dp);
|
向量点积
若要求取向量的点积,不能直接使用运算符求得,需使用函数dot(a,b)
1 2 3
| v1 = [2 3 4]; v2 = [1 2 3]; dp = dot(v1, v2);
|
*号用于运算矩阵乘法,而.*用于数组的乘法(数组的乘法有一套自己的算法)
矩阵
矩阵索引
第m行,第n列的一个元素
第m列的所有元素
1 2
| a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; v = a(:,4)
|
1 2
| a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a(:, 2:3)
|
注:索引从1开始,而不是0
删除行或列
1 2
| a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]; a( 4 , : ) = []
|
除法
1 2 3 4
| a = [ 1 2 3 ; 4 5 6; 7 8 9]; b = [ 7 5 6 ; 2 0 8; 5 7 1]; c = a / b d = a \ b
|
行列式
1 2
| a = [ 1 2 3; 2 3 4; 1 2 5] det(a)
|
多维数组
1 2 3 4 5 6 7 8 9 10 11 12 13
| a = [7 9 5; 6 1 9; 4 3 2]; a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9];
结果: a(:,:,1) = 7 9 5 6 1 9 4 3 2
a(:,:,2) = 1 2 3 4 5 6 7 8 9
|
或使用cat函数:
1
| b = cat(3,a,[ 1 2 3; 4 5 6; 7 8 9]);
|
单元阵列
单元阵列的阵列中每个单元格可以存储不同的维度和数据类型的数组的索引单元格
1 2 3 4 5 6 7
| c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
结果: c = 'Red' 'Blue' 'Green' 'Yellow' 'White' [ 1] [ 2] [ 3] [ 4] [ 5]
|
单元阵列索引
可以使用大括号或小括号索引,索引方法与前相同
函数
一般函数格式
1 2 3 4
| function [out1,out2,...] = fun_name(in1,in2,...)
... end
|
匿名函数
1 2
| power = @(x, n) x.^n; result1 = power(7, 3)
|
绘图
1
| plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
|
绘制多条曲线
1 2 3 4 5
| x = [-10 : 0.01: 10]; y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9; g = 5 * x.^3 + 9 * x + 2; plot(x, y, 'r', x, g, 'g') legend('y(x)','g(x)');
|
设置轴刻度
1
| axis ( [xmin xmax ymin ymax] )
|
绘制多个图像
例如生成2*2个图像,第二行第一个图则为subplot(2,2,3);
代数
声明一个代数
解代数方程
1
| solve(x^2 -7*x + 12 == 0);
|
或:
1 2
| eq='x^2 -7*x + 12 == 0'; result=solve(eq);
|
若要单独显示各个根:
1 2 3 4
| disp(result(1)); disp(result(2)); disp(result(3)); disp(result(4));
|
多项式
当计算一个一元多次项时,可以使用行向量表示,例如:
方程 P(x) = x^4 + 7x^3 - 5x + 9 可以表示为:
求解:
还可以通过输入矩阵的方式计算多个值:
1 2 3 4 5 6 7 8 9 10
| p = [1 7 0 -5 9]; X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8]; polyval(p, X);
ans = 2307 -1769 -939 4499 2314 -2376 -249 4695 2256 -1892 -549 4310 4570 -4532 -1062 9269
|
使用多项式的曲线拟合
当我们要对离散点拟合一条曲线时,可以使用polyfit函数,该函数的作用是通过最小二乘法的方式拟合出一条曲线的多项式。
1 2
| x = [1 2 3 4 5 6]; y = [5.5 43.1 128 290.7 498.4 978.67]; p = polyfit(x,y,5)
|
此时p为一个多项式,可以使用polyval在坐标集上拟合出该曲线
1 2 3
| x2 = 1:0.1:6; y2 = polyval(p,x2); plot(x,y,'o',x2,y2)
|