Matlab-基本操作

《Matlab2018从入门到精通》基础部分学习笔记

第3章 MATLAB基础知识

MATLAB中的常量

ans  # 默认变量
pi              # 圆周率
eps             # 浮点运算的相对精度
inf     # 无穷大
NaN             # 不定值
i(j)    # 复数中的虚数单位
realmin # 最小正浮点数
realmax # 最大正浮点数

关系运算符

运算符定义
==等于
~=不等于
>大于
>=大于等于
<小于
<=小于等于

逻辑运算符

运算符定义
& 或 and
| 或 or
~
xor异或
any有非零为真
all皆非零为真

复数运算

abs  # 模
angle   # 相角
complex # 用实部和虚部构造复数
conj    # 共轭
imag    # 虚部
real    # 实部
unwrap  # 调整矩阵元素的相位
isreal  # 是否为实数矩阵
cplxpair        # 把复数矩阵排列成复共轭对

三角函数

sin
cos
tan
cot
sec
csc

第4章 向量与多项式

向量生成

#[ 直接生成
x = [1 2 3 4]
x = [1; 2; 3; 4]
# 冒号]()
x = 0: 2: 10    # 0 2 4 6 8 10
# linspace(first_value, last_value, number)
x = linspace(0, 10, 6)
x = logspace(0, 5, 6)   # [ 1          10         100        1000       10000      100000]

向量引用

x = [1 2 3 4 5]
# x(n)
x(3)    # 3
# x(n1:n2)
x(1:3)          # [ 1     2     3]

点积运算

a .* b
dot(a, b)
dot(a, b, dim)  # a, b在dim维的点积

叉积运算

cross(a, b)
cross(a, b, dim)

多项式生成

# 直接输入
\'a*x^n + b*x^(n-1)\'
# 向量构成
p = [3 -2 4 6 8]
poly2sym(p)             # 3*x^4 - 2*x^3 + 4*x^2 + 6*x + 8
# 由根生成多项式
root = [-5 3+2i 3-2i]
p = poly(root)
poly2sym(p)

数值多项式运算

多项式的四则运算实际上是多项式对应系数的四则运算

p1 = 1:5
p2 = 2:6
p1+p2
# 乘法(卷积)
conv(p1, p2)
# 除法(解卷)
[k, r] = deconv(p1, p2) # k为商,r为余式
# 导数
polyder(p)      # 输入系数向量,返回导数系数向量

特殊变量

单元型变量

# 创建
# 赋值语句直接定义
A = [1 2; 3 4];
B = 3 + 2*i;
C = \'efg\';
D = 2;
E = {A B C D}
# 申请空间后逐个赋值
E = cell(1, 3);
E{1, 1} = [1: 4];
E{1, 2} = B;
E{1, 3} = 2;

# 引用
E{1}    # ans = 1     2     3     4
E(1)    # ans = 1×1 cell 数组 {1×4 double}                (显示元素的压缩形式)

有关函数

函数名说明
cell生成单元型变量
cellfun对单元型变量中的元素作用的函数
celldisp显示单元型变量的内容
cellplot用图形显示单元型变量的内容
num2cell将数值转换成单元型变量
deal输入输出处理
cell2struct将单元型变量转换成结构性变量
struct2cell将结构型变量转换成单元型变量
iscell判断是否为单元型变量
reshape改变单元数组的结构

结构型变量

根据属性名(field)组织起来的不同数据类型的集合,任何一个属性可以包含不同的数据类型

mn = struct(\'color\',{\'red\', \'black\'}, \'number\', {1, 2})
mn = 

  包含以下字段的 1×2 struct 数组:

    color
    number
    
mn(1)
ans = 

  包含以下字段的 struct:

     color: \'red\'
    number: 1
mn(2)
ans = 

  包含以下字段的 struct:

     color: \'black\'
    number: 2
mn(2).color
ans =

    \'black\'

有关函数

函数名说明
struct创建结构型变量
fieldnames得到结构型变量的属性名
getfield得到结构型变量的属性值
setfield设定结构型变量的属性值
rmfield删除结构型变量的属性
isfield判断是否为结构型变量的属性
isstruct判断是否为结构型变量

第5章 矩阵运算

创建矩阵

直接创建

a = [1 1 1; 1 1 1; 1 1 1]

M文件创建

gmatrix = [1 2 3 4 5;
6 7 8 9 10;
11 12 13 14 15]

利用文本创建

load goods.txt

创建特殊矩阵

# 单位矩阵
eye(n)                  # 创建nXn单位矩阵
eye(m, n)               # 创建mXn单位矩阵
eye(size(A))    # 创建和A维数相同的单位阵
# 全1阵
ones(n)
ones(m, n)
ones(size(A))
# 全0阵
zeros(m, n)
zeros(size(A))
# 均匀随机矩阵
rand(n)
rand(m, n)
rand(size(A))
# 创建系数向量是P的多项式的伴随矩阵
compan(P)
# 创建以向量v中的元素为对角的对角阵
diag(v)
# 创建nXn的Hilbert矩阵
hilb(n)
invhilb(n)              # 逆Hilbert矩阵
# 生成n阶魔方矩阵
magic(n)
# 将矩阵A转化为稀疏矩阵形式
sparse(A)

矩阵运算

修改矩阵元素

# 在A矩阵后扩充元素B、C
D = [A; B C]
# 删除第m行
A(m, :) = []
# 删除第n列
A(:, n) = []
# 对(m, n)元素赋值
A(m, n) = a
# 对m行赋值
A(m, :) = [a b c]
# 对n列赋值
A(:, n) = [a b c]

变维

# 调用函数reshape()
reshape(X, m, n)
# 将A的元素赋值到C,以C维度排列
C(:) = A(:)

变向

命令名说明
rot(90)逆时针旋转90度
rot(90, k)逆时针旋转90 * k
fliplr()左右翻转
flipud()上下翻转
flipdim(X, dim)dim=1对行翻转,dim=2对列翻转

矩阵抽取

命令名说明
diag(X, k)抽取第k条对角线上的元素向量,0为主对角线,正往上,负往下
diag(X)主对角线
diag(v, k)将v代替第k条对角线
diag(v)v代替主对角线
tril(X)主下三角
tril(X, k)第k条对角线下三角(包括对角线)
triu(X)主上三角
triu(X, k)第k条对角线上三角(包括对角线)

数学运算

A + B
A - C
# 数乘
5A
# 乘
A * B
# 点乘
A .* B
# 左除
D\B = inv(D) * B
D .\ B
# 右除
B/D = B * inv(D)
B ./ D

矩阵运算

函数名说明函数名说明
cond条件数值diag对角变换
condest1-范数矩阵条件数值expm指数运算
det行列式值logm对数运算
eig特征值sqrtm开方运算
inv求逆cdf2rdf复数对角矩阵转换成实数块对角矩阵
norm求范数rref转换为逐行递减的阶梯矩阵
normest2-范数值rsf2csf实数块对角矩阵转换成复数对角矩阵
rank求秩rot90逆时针旋转90
orth正交化运算fliplr左右翻转
rcond逆条件数值flipud上下翻转
trace求迹reshape改变维数
triu上三角变换funm一般的矩阵函数
tril下三角变换

矩阵分解

# cholesky分解 A = RT*R
R = chol(A)
[R, p] = chol(A)        # 针对正定阵,若A为正定阵p=0,否则P为正整数,R为有序上三角阵

# LU分解 将矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积,A=LU
[L, U] = lu(A)
[L, U, P] = lu(A)       # P为置换矩阵,LU = PA

书P78

第6章 二维绘图

plot(x, y)
plot(x, y, s)
subplot(m, n, p)                # 将窗口分割成mXn个视图区域,并指定第p个视图为当前视图
hold on         # 使当前轴及图形保持不变,hold off取消

plot参数

线型控制

字符数据点字符数据点
+加号>向右三角形
o小圆圈<向左三角形
*星号s正方形
.实点h正六角星
x交叉号p正五角星
d棱形v向下三角形
^向上三角形

fplot

针对一元函数,自适应,光滑准确

subplot(2, 1, 2), fplot(@(x)sin(1./x), [0.01, 0.02])

ezplot

将符号函数图形化

syms x
f1 = exp(2*x) * sin(2*x);
ezplot(f1, [-4*pi, 4*pi])