【问题标题】:Julia: Diagonal times Sparse MatrixJulia:对角乘以稀疏矩阵
【发布时间】:2016-05-07 17:37:56
【问题描述】:
A = sparse([4 0 0; 0 0 0; 4 0 0])
D = Diagonal([1;3;4])
D*A

给出没有执行此操作的方法 * 的错误。有没有简单的操作方法?

【问题讨论】:

  • 开发版已修复。

标签: julia sparse-matrix diagonal


【解决方案1】:

使用转换:

julia> convert(SparseMatrixCSC{Int64,Int64},D)*A
3x3 sparse matrix with 2 Int64 entries:
    [1, 1]  =  4
    [3, 1]  =  16

一般解决方案,来自错误信息:

julia> f(a,b)
ERROR: MethodError: `f` has no method matching f(::T1, ::T2)

做:

julia> f(convert(T2,a),b)

【讨论】:

  • 对角矩阵使用稀疏矩阵是否有缺点/开销?
  • 当然可以,但除非有更好的选择,否则它是最好的解决方法。 github.com/timholy/ArrayIteration.jl 旨在使这变得不必要,允许编写处理任何类型的类稀疏数组的通用方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2014-03-06
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多