Matlab的使用稀疏矩阵乘法的Accumarray

尼桑·卡普尔(Nishant Kapoor)

我在matlab中有以下说明

out = accumarray (A,B,sz);

其中B和A的大小分别为1x957600和957600x1,而sz为[1445 1]。结果输出为1445x1尺寸。

我的问题是,如何在不使用accumarray和稀疏矩阵乘法的情况下实现该指令。

我找到了以下解决方案,但是我不知道如何根据我拥有的数据来实现它

Matlab代码

%fake data setup
    M=1e5;
    A=kron(speye(M),ones(1,16));
    N=size(A,2);
    [I,J]=find(A);
    x=rand(N,1);
    %pretend we build A from scratch
    tic; 
     A=sparse(I,J,1);
    toc %Elapsed time is 0.062737 seconds.
    %Apply A
    tic
      y1=A*x;
    toc %Elapsed time is 0.006868 seconds.
    %Using accumarray
    b=x(J);
    tic
     y2=accumarray(I,b,[M,1]);
    toc %Elapsed time is 0.012236 seconds.

我问这个问题是因为我想在c ++中使用accumarray。我对此有一个解决方案,但是要花很多时间来进行计算。是我两天前的问题,它具有accumarray的C ++实现。

路易斯·门多

sparse(A, 1, B, sz(1), sz(2))

例子:

A = [5;4;6;5;2;5;2;5;5;2];
B = [6 3 1 4 9 8 1 5 8 9];
sz = [10 1];
out = accumarray (A,B,sz);
out2 = sparse(A, 1, B, sz(1), sz(2));

这给

>> out
out =
     0
    19
     0
     3
    31
     1
     0
     0
     0
     0
>> full(out2)
ans =
     0
    19
     0
     3
    31
     1
     0
     0
     0
     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

稀疏矩阵矩阵乘法

来自分类Dev

Matlab中的布尔矩阵乘法

来自分类Dev

使用EJML的矩阵乘法

来自分类Dev

是否可以使用BLAS加快稀疏矩阵乘法?

来自分类Dev

稀疏矩阵乘法的Theano梯度

来自分类Dev

稀疏乘法,MATLAB:仅某些元素

来自分类Dev

稀疏矩阵的稠密阵列的右乘法

来自分类Dev

矩阵乘法-Matlab

来自分类Dev

MATLAB中带有spfun的稀疏矩阵乘法

来自分类Dev

用于3D矩阵的Matlab Accumarray

来自分类Dev

向量乘法矩阵-R与Matlab

来自分类Dev

稀疏矩阵的矩阵乘法速度是否比密集矩阵快?

来自分类Dev

python中用于矩形矩阵的稀疏矩阵矩阵乘法

来自分类Dev

scipy超稀疏矩阵乘法超级慢

来自分类Dev

使用EJML的矩阵乘法

来自分类Dev

稀疏矩阵-矩阵乘法

来自分类Dev

Matlab索引稀疏矩阵

来自分类Dev

是否可以使用BLAS加速稀疏矩阵乘法?

来自分类Dev

Matlab逐元素矩阵乘法

来自分类Dev

使用向量的矩阵乘法

来自分类Dev

稀疏矩阵乘法的Theano梯度

来自分类Dev

本征稀疏矩阵乘法似乎可以计算完整矩阵

来自分类Dev

使用稀疏的稀疏矩阵上的groupby

来自分类Dev

在MATLAB中使用稀疏矩阵作为邻接矩阵

来自分类Dev

Matlab有效的稀疏矩阵乘法

来自分类Dev

跨块的矩阵乘法-MATLAB

来自分类Dev

使用 MKL 稀疏矩阵向量乘法

来自分类Dev

稀疏矩阵乘法的执行时间

来自分类Dev

行分区的稀疏矩阵向量乘法