gpt4 book ai didi

matlab - 如何在 matlab 中分析矢量外积

转载 作者:行者123 更新时间:2023-12-03 21:33:00 24 4
gpt4 key购买 nike

在我的 matlab 分析过程中,我注意到一行代码消耗的时间比我想象的要多得多。知道如何让它更快吗?

X = Y(ids_A, ids_A) - (Y(ids_A,k) * Y(k,ids_A))/Y(k,k); 

X 和 Y 是具有相同大小 (dxd) 的对称矩阵,k 是 Y 中单个行/列的索引,ids_A 是所有其他行/列的索引向量(因此 Y(ids_A, k)是列向量,Y(k,ids_A)是行向量)

ids_A = setxor(1:d,k); 

谢谢!

最佳答案

您或许可以通过调用 bsxfun 来代替外积乘法:

X = Y(ids_A, ids_A) - (bsxfun(@times, Y(ids_A,k), Y(k,ids_A))/Y(k,k));

那么上面的代码是如何工作的呢?我们看一下一个向量是4个元素,另一个是3个元素时,外积的定义:

来源:Wikipedia

如您所见,外积是由元素级积创建的,其中第一个向量 u 是水平复制的,而第二个向量 v 是垂直复制的。然后你找到每个元素的元素乘积来产生你的结果。这是用 bsxfun Eloquent 地完成的:

bsxfun(@times, u, v.');

u 是列向量,v.' 是行向量。 bsxfun 自然地复制数据以遵循上述模式,然后我们使用 @times 执行逐元素乘积。

关于matlab - 如何在 matlab 中分析矢量外积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com