matlab作为一项计算语言,无疑是由很多实用的运算函数可供调用的,学会这些函数,对于我们进行程序编写能节省时间、精简代码、减少出错概率。
一、取整
1.round()
四舍五入取整
2、ceil()
向上取整,ceil是天花板的意思
x = 3.14;
y = ceil(x);%取整后为4
3、floor()
地板自然是向下取整了
二、取随机数
1、rand
生成0到1之间均匀分布的随机数。 示例:x = rand(1, 5);
生成一个包含5个0到1之间随机数的行向量。
2、randn
生成服从标准正态分布(均值为0,方差为1)的随机数。 示例:x = randn(1, 5);
生成一个包含5个服从标准正态分布的随机数的行向量。
3、randi
生成指定范围内的整数随机数。 示例:x = randi([1, 10], 1, 5);
生成一个包含5个1到10之间整数随机数的行向量。
4、randperm
生成指定范围内的随机不重复排列。 示例:x = randperm(10, 5);
生成一个包含1到10之间5个随机排列且无元素重复的行向量。
5、unifrnd
函数用于生成服从指定区间的连续均匀分布的随机数。其基本语法为:
r = unifrnd(a, b, m, n)
其中 a
和 b
分别表示均匀分布的区间上下界,m
和 n
表示生成随机数的矩阵大小,r
则是生成的服从均匀分布的随机数矩阵
6、randsample
从输入的向量中随机采样,也可以是在1到指定整数内随机采样
y = randsample(10, 5),指从1~10内随机采样5个样本
三、运算符
1..*
.*用于两个矩阵的乘法时,表示对应位置的元素相乘,结果仍为矩阵。
C = A .* B;
这将生成一个新的矩阵 C,其中 C(i,j) 的值等于 A(i,j) 与 B(i,j) 的乘积
2.dot()
点乘运算,等价于 *运算符
A = [1, 2, 3];
B = [4, 5, 6];
C = dot(A, B);
disp(C); % 输出结果为 32
3.cross()
叉乘运算
A = [1, 2, 3];
B = [4, 5, 6];
C = cross(A, B);
disp(C); % 输出结果为 [-3, 6, -3]
4.大于、小于、等于
对应位置的元素进行比较,结果存在相同维度的矩阵中
a = [1, 2, 3];
b = [2, 1, 4];
result = a < b;
disp(result); % 输出结果为逻辑向量 [true, false, true]
四、矩阵的逻辑运算
1.all()
它返回一个逻辑值(true或false),表示在给定的维度上,所有的元素是真都返回结果为真
例子:c=all(a<b),a,b是向量,当a中所有元素都小于b中对应位置的元素时,c为true
再如:CV是一个矩阵,fIndex = all(CV <= 0,2)的作用是找到矩阵CV中每行元素都小于等于0的索引。
2.any()
all是全部满足,any 则是任意满足,即在给定的维度上,任意的元素是真都返回结果为真
3.矩阵和逻辑矩阵的结合使用
A是矩阵,B是与之同等维度的逻辑矩阵。逻辑矩阵有logical类型的元素构成,logical元素的取值只有true和false。
(1)A(B)返回B中为true的位置对应的元素组成的列向量;
(2)A(B)=1则会将A中对应位置的元素赋值为1;
(3)通过逻辑矩阵赋值
以在matlab命令行运行为例,
a =
1
0
1
b =
1
2
3
>> b(logical(a),:)=[4;4]
b =
4
2
4
(4)通过逻辑矩阵取值
b =
4
2
4
>> b(logical([1;0;1]),:)
ans =
4
4
五、矩阵运算
1.在指定维度上求最小、求最大、求和
minValues = min(A, [], 1);
最后一个参数是维度,维度 dim 表示长度减至 1 的维度,1是列,2是行,dim=1即要求每一列中最小的元素。同理2代表要在每一行中求最小值。值得注意的是当A是矩阵,直接使用min(A)和使用min(A, [], 1)效果是一致的。
求最大用max,求和用sum
2、将矩阵作为索引,从向量中取值构成新的矩阵,向量可以是行向量也可以是列向量。
a =
1 2
2 1
K>> b=[4,5,6,7]
b =
4 5 6 7
K>> b(a)
ans =
4 5
5 4
注意:当输入的b是矩阵时,会将其按列展开,再作为待操作的对象。因为matlab中的矩阵就是按列存储的。
3、矩阵去重unique()
a =
4
2
3
1
5
2
1
K>> [c,d,e]=unique(a,'rows')
c =
1
2
3
4
5
d =
4
2
3
1
5
e =
4
2
3
1
5
2
1
c是去重的结果,d由c在a中的索引组成,e由a在c中的索引组成。
4、矩阵按列展开成列向量
A = [1 2; 3 4; 5 6];
B = A(:); % 将 A 转换为列向量
在这个示例中,变量 B
的值将是 [1; 3; 5; 2; 4; 6]
,即将矩阵 A
按列展开成列向量
5、查找find
返回满足条件的元素的线性索引向量
A =
1 2 3
4 5 6
find(A>2)
ans =
2
4
5
6
六、求矩阵维度
1、size()
返回两个参数:行和列。使用方法[row,col]=size(A)
2、length()
求矩阵的最大维度,在以下例子中,返回3
a = [1 2 3; 4 5 6];
len = length(a);
七、计算向量之间、矩阵之间的距离
pdist2
Pairwise distance between two sets of observations,计算两个观测量集合之间的距离
计算过程是,计算向量两两之间的距离,存储在结果矩阵相应的位置,观测量是行向量,如pdist2(A,B),A中的第i个行向量和B中的第j个行向量的距离存放在结果矩阵的(i,j)位置,函数默认计算欧式距离。当A和B都退化成1维行向量,结果矩阵也就退化成了一个标量
pdist2(PopObj,PopObj,'cosine')计算余弦相似度,余弦相似度的定义是1减去两个向量的cos值
本文持续更新。。。。。。