use*_*051 1 range matrix colon julia
我有以下类型定义:
type TransitionMatrix
A :: SparseMatrixCSC{Float64,Int64}
d :: Array{Float64,1}
I :: Array{Int64}
end
Run Code Online (Sandbox Code Playgroud)
并且想要允许以下内容:如果我们有T :: TransitionMatrix,我希望范围功能(IE,P [:,1],P [:,3]等)可以用于它TA我该怎么做?我已经做了类似的事情来定义转换矩阵的"大小",如下所示,但我不知道如何让冒号运算符按照我的意愿运行.谢谢!
function Base.size(T :: TransitionMatrix, dim)
return size(T.A, dim)
end
Run Code Online (Sandbox Code Playgroud)
你会想要写的版本getindex,并size为您的TransitionMatrix.例如:
import Base: getindex, size
getindex(A::TransitionMatrix, indx1, indx2) = @show (indx1, indx2)
size(A::TransitionMatrix) = size(A.A)
size(A::TransitionMatrix, d::Integer) = size(A.A,d)
Run Code Online (Sandbox Code Playgroud)
然后
julia> A[:,2:3]
(indx1,indx2) = (1:5,2:3)
(1:5,2:3)
Run Code Online (Sandbox Code Playgroud)
解析器扩展:为1:size(A,d).