Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 如何在Julia中为自己的复合类型定义“:”范围运算符?_Matrix_Range_Julia_Colon - Fatal编程技术网

Matrix 如何在Julia中为自己的复合类型定义“:”范围运算符?

Matrix 如何在Julia中为自己的复合类型定义“:”范围运算符?,matrix,range,julia,colon,Matrix,Range,Julia,Colon,我有以下类型定义: type TransitionMatrix A :: SparseMatrixCSC{Float64,Int64} d :: Array{Float64,1} I :: Array{Int64} end 考虑到以下几点:如果我们有T::TransitionMatrix,我希望范围功能,即p[:,1],p[:,3]等,对T.A.有效。我该怎么做?我已经做了类似的事情来定义转换矩阵的大小,如下所示,但我不知道如何允许冒号操作符按我所希望的方式运行。谢谢大家! fun

我有以下类型定义:

type TransitionMatrix
  A :: SparseMatrixCSC{Float64,Int64}
  d :: Array{Float64,1}
  I :: Array{Int64}
end
考虑到以下几点:如果我们有T::TransitionMatrix,我希望范围功能,即p[:,1],p[:,3]等,对T.A.有效。我该怎么做?我已经做了类似的事情来定义转换矩阵的大小,如下所示,但我不知道如何允许冒号操作符按我所希望的方式运行。谢谢大家!

function Base.size(T :: TransitionMatrix, dim)
  return size(T.A, dim)
end

您需要为TransitionMatrix编写getindex和size的版本。例如:

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)
然后


解析器将:扩展为1:sizeA,d.

您需要为TransitionMatrix编写getindex和size的版本。例如:

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)
然后


解析器扩展到1:siZea. d/p>考虑接受Tyoy的回答。考虑接受Tyoy的回答。