是酱紫的,做数据处理。。。。我要提取一个32万行16列的矩阵A与一个16行32万列的矩阵B的乘积的对角线元素,如果直接算所有元素,太费时间了。用什么指令可以让matlab只算出对角线元素? ps:是只算对角线元素后提取,而不是算出整个矩阵后提取;另外,我也会for i=320000 A[:,i].*B[i,:]这样子写,但是我隐隐的觉得应该还有更简便的方法。。。。。求大神赐教,谢过! 32位2012a 32位win7 |
最佳答案
5 条回复
winner245 发表于 2014-3-22 18:40 不对啊。。。我只需要对角线元素,您这是求了个行和啊~ |
JLU_xiaobo 发表于 2014-3-23 08:06 你不是要取出 A*B 后所得的矩阵的对角线上所有元素吗? |
JLU_xiaobo 发表于 2014-3-23 08:06 你最好仔细看我的代码。你是要求 A*B 得到一个32万行*32万列的矩阵的所有对角元素,也就是让 A 的第 i 行与 B 的第 i 列求内积,一共得到32万个标量。如果是这样的话,2L 程序得到的就是你要的结果。 不过,你目前的循环写法有错误,应该是 A(i,:)*B(:,i) |
winner245 发表于 2014-3-23 08:16 对,对,对!您是对的,我刚接触matlab,对*和.*理解不深,刚才一试才彻底明白*是直接*,.*是对应元素*。谢过~另外有帖子专门讲()和[]的区别和练习的么?我对这个还欠缺理解~再谢! |
Powered by Discuz! X3.4
© 2001-2024