Matlab运算相关函数总结

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)

其中 ab 分别表示均匀分布的区间上下界,mn 表示生成随机数的矩阵大小,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值

本文持续更新。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值