![]() |
如何在Matlab中加速/避免大型矩阵的乘法?
设置在这里。
X:6000x8000非稀疏矩阵 B:只有几十个非零的8000x1稀疏向量 d:正数 M:是稀疏的X'X,即将小于d的元素的阈值阈值设为0。仅保留数百个元素。因此(X'* X-M)有很多小元素,并不稀疏。 我想计算向量y =(X'* X-M)* B并可以重写为y = X'*(X * B)-M * B。第一部分足够快,但是第二部分涉及X'* X,并且非常慢。 有人可以帮助我加快计算速度吗? 太感谢了! [B]回答:[/B] 您解释说B非常稀疏:长度为8000的列数组中有数十个非零值。因此,我认为您可以按以下方式加快B的乘法速度。首先,您可以在B找到非零值的索引: nzIndex = find(B); 然后,您可以按如下方式更改y的计算: Bnz = B(nzIndex); %# Non-zero values in B y = X.'*(X(:,nzIndex)*Bnz) - M(:,nzIndex)*Bnz; [url=https://stackoverflow.com/questions/5467423]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 12:07。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.