MATLAB学习笔记(二)矩阵和数组

矩阵的创建和合并

直接声明
A = 100
A = [1,2,3,4,5]
创建步长向量
>> a = 2:2:20

a =

     2     4     6     8    10    12    14    16    18    20
>> a = 1:10

a =

     1     2     3     4     5     6     7     8     9    10
多维向量

加分号;

带计算的向量

注意:分为不同情况

>> a = [1 + 2 - 3]%都通过空格分开 计算数值

a =

     0

>> a = [1 +2 -3]%符号和数值不分开计入向量

a =

     1     2    -3
    

创建特殊矩阵

函数名称 函数功能
zeros 0矩阵
diag 对角矩阵
ones 创建所有元素为1的矩阵
eye 单位矩阵
magic 魔方矩阵
pascal pascal矩阵
Rand 随机均匀分布矩阵
randperm 指定整数元素随机分布构成的矩阵
对角矩阵举例
>> diag([1,2,3,4,5],0)

ans =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5
pascal矩阵举例
>> pascal(4)
每个点的是上边左边的和
ans =

     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20

矩阵的合并

水平合并

C = [A B]

竖直合并

C = [A;B]

矩阵的寻访和赋值

全下标标识
a =

     1     2     3
     4     5     6

>> a(2,1)

ans =

     4

注意计数从1开始

单下标标识
>> a(4)

ans =

     5

注意从上往下数

逻辑1标识
>> b = a>5

b =

  2×3 logical 数组

   0   0   0
   0   0   1

>> a(b)

ans =

     6

>> 

用这个可以选择出具有特点的数值

全行全列寻访
>> d = a(1,:)

d =

     1     2     3
>> e = a(:,2)

e =

     2
     5
 >> e = a(:,2)

e =

     2
     5
向量寻访

寻找1,3 向量的分向量


>> g = a(:,[1,3])

g =

     1     3
     4     6

矩阵赋值

在上面的寻访基础上 = (数值)

删除一行

在上面的寻访基础上 = []

数组运算常用函数

MATLAB基础数学函数

函数 说明
abs(x) 绝对值或者向量长度
angle() 复数z的角
sqrt() 开平方
real() 复数的实部
imag() 复数的虚部
conj() 复数的共轭复数
round() 四舍五入的最近整数
fix() 向零方向最近的整数
floor() 舍去法取最近的整数
ceil() 进一法取最近的整数
rat() 将实数转化为分数表示
sigh() -1(x<0) 1 (x>0) 0 (x = 0)
rem(x,y) x除以y的余数
gcd(x,y) x 和 y的最大公倍数
lcm(x,y) x和y的最小公倍数
exp(x) 自然指数
pow2(x) 2的指数
log(x) 自然对数
log2(x) 2为底的对数
log10(x) 10为底的对数

MATLAB常用三角函数

函数 说明
sin
cos
tan
asin
acos
atan

适用于向量的常用函数

函数 描述
min 元素的最小值
max 元素的最大值
mean 元素的平均值
median 元素的中位数
std 元素的标准差
duff 元素相邻元素的差
sort 排序
nurm 欧式长度,也就是范数
sum 元素和
prod 元素总乘积
cumsum 累计元素综合,每个数是sum,规模不变
cumprod 累计元素乘积
dot(x,y) 内积
cross(x,y) 外积

查询信息

函数 功能
Length 矩阵最长
numel 元素个数
Ndims 维度
size 维度

数组运算和矩阵运算

MATLAB中矩阵和数组实际上是没区别的,严格来说,矩阵属于数组。

指令 说明
a’ 共轭转置:i,j互换,虚数虚部取相反数
a.’ 非共轭转置
A±B 对应元素加减
k.a / ka k乘以a每一个元素
a*b 元素相乘(矩阵乘法
a.*b 数组乘法:对位相乘
a^k k次方
k^a k为底a为幂运算
k./a k除以a每个元素,注意 不能省略.
a/b b/a 按位相除

总结:矩阵和数组的加减乘除运算不相同,数组加.

矩阵的重构

元素扩展

直接给一个超标的行列赋值可以扩展

元素删除

上文说了

矩阵重构
函数 解释
rot90(A) 逆时针转90度
rot90(A,k) 转k个90度
tril(a) 主对角线以上全为0
filpud(A) 上下翻转
filplr(A) 左右翻转
reshape(A,m,n) 重构变为mn维度的矩阵
下三角
>> tril(a,-1)

ans =

     0     0     0
     4     0     0
     7     8     0

稀疏矩阵

  • 稀疏矩阵可以大大减少数据占用的内存方式,使用稀疏矩阵可以降低内存使用量1000倍(1100*1100)。
  • 用sparse(a) 和full(s)将其和普通矩阵转换
  • 用稀疏矩阵的方式存取数据文件是一个很好的选择
  • MATLAB中很多数学函数可以运用到稀疏矩阵,此时相当于一般矩阵
  • 运算结果都是稀疏矩阵,除非是稀疏矩阵的组合
Cat函数
cat 函数 用于连接两个矩阵
数据1 上下连接
数据2 左右连接
数组3 三维方向扩展

多维数组

全下标创建
合成创建
rand创建

rand(3,4,3)

cat构建多维数组
repmat构建多维数组
>> repmat([1 2;3 4;5 6],[1,2,3])

ans(:,:,1) =

     1     2     1     2
     3     4     3     4
     5     6     5     6


ans(:,:,2) =

     1     2     1     2
     3     4     3     4
     5     6     5     6


ans(:,:,3) =

     1     2     1     2
     3     4     3     4
     5     6     5     6

第一个是源矩阵 第二个是扩展有几个

用reshape进行扩展

多维数组寻访

多维数组重构

多项式表达及其操作

多项式的表达

从前往后,每一个数是x幂的常数

多项式的创建

p = poly(A)
计算A的特征多项式
ploy2str(A,‘s’)
使用较为习惯的方式显示多项式

多项式运算
函数 功能
conv 实现多项式乘法
deconv 实现多项式除法,多项式的乘法和出发相当于求卷积和去卷积,分别调用conv和deconv函数,即可实现应用于信号与系统中的信号之间的卷积运算
poly 求具有指定根的多项式,求特征方程 根->多项式
polyder 多项式求微分(求导)
polyeig 多项式特征根
polyfit(x,y,n) 多项式拟合,传入x,y 为横坐标纵坐标,n为多项式最高项
polyint 多项式积分
polyval 按数组计算多项式值,传入一个参数进行运算求值
residue(a,b) 实现部分分解,分解为多个分子分母多项式的和
roots 多项式的根

2019 3 20

你可能感兴趣的:(技术,MATLAB)