A = sparse([4 0 0; 0 0 0; 4 0 0])
D = Diagonal([1;3;4])
D*A
Дает ошибку, что для этой операции не существует метода *. Есть ли простой способ для выполнения операции?Julia: Diagonal times Sparse Matrix
A = sparse([4 0 0; 0 0 0; 4 0 0])
D = Diagonal([1;3;4])
D*A
Дает ошибку, что для этой операции не существует метода *. Есть ли простой способ для выполнения операции?Julia: Diagonal times Sparse Matrix
С обращенного:
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)
Do:
julia> f(convert(T2,a),b)
Есть ли недостаток/накладные расходы для использования разреженной матрицы для диагональной матрицы? –
Конечно, да, но пока есть лучшие варианты, это лучший способ обхода. https://github.com/timholy/ArrayIteration.jl старается сделать это ненужным, позволяя писать общие методы, которые обрабатывают любой тип разреженного массива. – tholy
Это исправлено в разрабатываемой версии. –