'*作为matlab中点函数的更快替代品

时间:2014-05-08 13:32:25

标签: matlab optimization

我正在分析一些matlab代码,发现我的执行时间主要是调用dot。在分析器中显示的功能列表中,我注意到以下注释行:

  

当A和B都是列向量时,DOT(A,B)与A' * B相同。

最初我的代码在大约22秒内运行,在dot的140976次调用中花费了17.5秒。我将代码更改为使用'*代替dot运行时间降至 14秒!这个运算符显然比获取短列向量的点积的函数调用快得多

我的问题:'*运算符究竟是什么,是否有文档记录(源代码除外)以及它可以/应该用于什么?

记录:我使用的是Matlab vintage R2010b。

2 个答案:

答案 0 :(得分:3)

没有'*运算符,它是顺序调用的两个运算符。首先'即转置然后*即矩阵乘法。

如果AB都是列向量,那么通过将A转置为行向量,两者的矩阵乘积相当于点积,即两个相应元素的所有产品

答案 1 :(得分:1)

您确定获得了相同的结果吗?因为点函数在相同维度的两个向量之间执行点积,而'*执行矩阵乘积。实施例

A=[1 1 1];
B=[2 2 2];
A'*B =  2     2     2
        2     2     2
       2     2     2

dot(A,B)= 6

我认为你正在考虑A * B',它等于你的向量是行向量的情况下的点积。

如果您的向量是列向量,请使用'*。 为了总结你需要你的矢量以行*列的形式,如果你想要一个点积。 (使用点功能时无需考虑)。