在matlab中,dot命令是计算向量或矩阵的内积,在矩阵论中,若a,b是向量,则内积使用表示,其本质是对应元素相乘后再将各项加在一起,即

=a1b1+a2b2+…+anbn

若A,B是2维矩阵,在使用dot计算内积时,matlab把A,B中各列看作向量,分别计算对应列的内积,也可以使用带参数dim的格式,即

dot(A,B,dim)

这个格式中,当dim=1时,以对应各列为基本向量,计算内积;当dim=2时,以对应各行为基本向量,计算内积;当dim=3时,此时矩阵属于高维矩阵,按照矩阵的维度由低到高,若设定为列、行、页、册、卷等逐级升高的维度代号,则当dim=3时,首先以页为操作单位,将对应页上对应位置的元素求积,再将各页上求得的积,按对应位置求和。

例如,三维矩阵A,B如下,

8a3c3603e3bd9bd2311a2fd2a202ad25.png

则dot(A,B,3)的计算如下:

05c810107eca4a5adea9d760468f16d3.png

再举一个4维矩阵的例子,其具体计算如图。

2c9a1ace4323bc76322a2b309d9906c1.png

为了方便验证,下面给出上述例子的实现代码,可自己运行测试,

function testFunc(n,k)% 功能:dot函数的高维数组测试函数% 参数:n—维数;k—维度量值;二者均为正整数。vec='[';for iLoop=1:n   vec=horzcat(vec,'k ');endvec=horzcat(vec,']');vec=eval(vec);A=reshape(1:k^n,vec);B=reshape(k^n:-1:1,vec);for iDim=1:n   fprintf('\n下述内积为: dot(A,B,%d);\n',iDim);   disp(dot(A,B,iDim));end上述代码摘自《MATLAB语言编程》一书,更多细节,请参阅该书。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐