0. 基础知识
获取帮助: help / help <函数名> / help win / help desk = doc
找出相关命令: look for <关键字>
类型 | 信息 | |||
---|---|---|---|---|
基本型 | 数值型 | 整型 | 无符号 | uint 8/16/32/64 |
有符号 | int 8/16/32/64 | |||
浮点型 | 单精度 | single | ||
双精度 | double(默认) | |||
字符串 | ||||
构造型 | 数组/矩阵 | 只能含有同种类型, 定义[], 访问() | ||
元胞 | 可以含有不同类型, 定义{}, 访问{} | |||
结构 | struct 域 field | |||
类 | ||||
符号对象 |
常量: 内部定义的 ans, eps( 2 − 52 2^{-52} 2−52), realmax, realmin, pi, version, NaN, mf, i, j, lasterr 可以赋值, 但clear all后恢复默认值
所有变量以数组/矩阵形式保存
变量类型 | |
---|---|
Local | 函数中定义的, 函数结束即死亡 |
Global | 在工作空间, clear后死亡(多函数可用) |
Persistent | 类似static变量, .m文件中定义使用, clear后死亡 |
who 工作空间变量名
whos 工作空间变量名及其信息
whor <变量名>
clear xxx 删除xxx变量
clc 清除记录
intmax(‘int8’)
intmin(‘int16’)
realmax(‘single’)
realmin(‘double’)
class(xxx) 查看数据类型
round(xxx) 最接近整数
fix(xxx) 向0靠近的整数
floor(xxx) 小于xxx的整数
ceil(xxx) 大于xxx的整数
format short/long/… 替换输出格式
find(x) 返回非零的索引值
虚数: 2-3i (3和i之间不能有空格) / complex(2, -3)
逻辑: 0/1
三元运算 | |
---|---|
数值运算 | + - * \ / ^ .+ .- .* .\ ./ .^ |
关系运算 | == ~= < <= > >= || && |
逻辑运算 | & | ~ any() or() not() all() xor() |
1. 矩阵
数组/矩阵类型 | ||
---|---|---|
直接构造 | […], " “或”,"为行内间隔, ";"为行间间隔 | |
增量法 | “:” | x = i : j (默认间距1, 递增), x = i : k : j (间距k, 递增), x = i : -k : j (间距k,递减) |
等差向量 | linspace(2, 8, 10), 2到8等差取10个数(默认100个数) | |
等比向量 | logspace(2, 8, 10), 2到8等比取10个数(默认100个数) | |
特殊 | zeros, ones, eye(单位矩阵, 默认2维), magic, rand(均匀分布随机), randn(正态分布随机), diag(对角阵) | |
复合 | B = [A, eye(3), ones(3), A .* 2] |
返回矩阵行列数: size(A)
转置: ’
共轭转置: .’
A(r, c) 取r行c列元素, (r/c=":", 值全部)
A(😃 所有元素排成一列
A(😃 = D(😃 要求D, A元素数量相等, 可保持A行列形式不变替换值
x = [], 清空但不删除x
A(:, 3:4) = [], 删除3, 4列
flipud(x) 沿水平线翻转
fliplr(x) 沿垂直线翻转
reshape(A, 1, 9) 重整行列数
rot90(x) 逆时针旋转90°
det(x) 行列式
rank(x) 秩
inv(x) 逆
trace(x) 迹
eig(x) 特征向量
[U, S, V] = svd(x) SVD奇异值分解
2. 字符串
c = ‘B1-%’ c(1)为"B",
char(97)为"B"
num2str(97)为"97"
mat2str()
int2str()
a = [‘I’, ‘Am’; ‘a’, ‘uo’] = [‘IAm’; ‘auo’] 要保证每一行维数相等
strcat('I ', ‘Am’) 为"IAm", 去掉尾空格
length(a) = max(size(a))
isletter()
isspace()
findstr(A, a)
strcmp(A, B)
3. 函数句柄
f = @functionname f可代替函数名
a = f(x, y)
sq = @(x)x.^2 那么sq(5) = 25
4. 元胞
a{1} 访问第一个元素
a = {[2, 3; 3, 4], ‘str’; 42, {1}}
a = cell(3, 3)
a{3, 2} = rand(3, 4)
deal(a{:}) 查看内容
a{1, 2} = [] 删除
num2cell()
celldisp(a) 显示域
5. 结构
student(1) 访问第一个
student(1).name = ‘a’
student(2).name = ‘b’
student(1).grade = 4
student(3) = struct(‘name’, ‘c’, ‘grade’, 5)
student.name可访问所有student的name
getfield(student(1), ‘name’)
student = rmfield(student(1), ‘name’)
6. 函数
disp()
fprintf("%d", x)
for i = 1:10 … end
while … end
try … catch … end
if … elseif / else if … end
switch … case … otherwise … end
function ret=name(x) … end
pause(3) 暂停2秒
pause 暂停直到输入
.m文件 | |
---|---|
脚本文件 | 全局变量, 无参, 无返回 |
函数文件 | local, 有参, 有返回值 |
nargin 实际输入个数
nargin(‘fun’) 标准输入个数
nargout 实际输出个数
nargout(‘fun’) 标准输出个数
inputname(n) 第n个输入的实际名字
varargin 变长输入
varargin(n) 第n个输入
varargout(n) 第n个输出
keyboard 中断, 出现k>>(可debug), 工作区出现local变量
标准断点 红: 有效, 灰: 无效
dbstop in file (at line No.) (命令行) dbstep运行, dbquit 推出debug
dbclear all / in file / in file at line 清除断点
dbstatus
条件断点 dbstop … if … / error / warning
profile on / profile view 分析时间
matlab优化方式: 向量化, 预定义(先声明H=zeros(5, 10000), 再赋值)
7. 数值运算
m = max(A)
[m, idx] = max(A), 此方式获得idx
max(a, b)
max(A, [], 2) 第2行中最大值
max(A, [], 1) = max(A)
sort(x) 默认升序
mean(x) 或 mean(x, dim)
median(x) 或 median(x, dim)
sum(x) 或 sum(x, dim)
std(x) 标准差
prod(x) 元素乘积
cumsum(x) 元素累和
cumprod(x) 元素累积
corrcoef(x) 相关系数