2016-12-31 12 views
4

我用find與3D矩陣A這樣的:如何在Julia的矩陣中找到值的位置?

julia> find(A.==1) 
2-element Array{Int64,1}: 
1 
234 
4567 

朱莉婭給我的位置作爲指標,而不是作爲索引的陣列。例如,它返回234而不是(1,2,1)。

我看着this question,但我的矩陣非常大,形狀爲(360,360,360)。我不能使用在那裏建議的方法。

我試圖研究它的指數模式,並使用我編寫一個函數變換它:

function cmf_p(matrix) 
     for a=1:length(matrix); 
      aa=matrix[a] 
      rd_u_m=ceil(aa/(360^2)) 
      rd_d_m=floor(aa/(360^2)-1) 
      rd_d_t=(aa-rd_d_m*360)/360^2 
      rd_d_p=aa-rd_d_m*360^2-floor(rd_d_t)*360 
      println(rd_u_m); 
      println(ceil(rd_d_t)*360); 
      println(ceil(aa-rd_d_m*360^2-floor(rd_d_t)*360)) 
     end  
end 

但它給了我錯誤的結果。

如何使用索引並將其轉換爲我想要的位置?

+0

我的帖子可以回答你的問題?如果是這樣,請接受 –

回答

6

您正在尋找ind2sub

julia> A = eye(3) 
3x3 Array{Float64,2}: 
1.0 0.0 0.0 
0.0 1.0 0.0 
0.0 0.0 1.0 

julia> inds = find(A.==1.0) 
3-element Array{Int64,1}: 
1 
5 
9 

julia> [ind2sub(size(A), ind) for ind in inds] 
3-element Array{Any,1}: 
(1,1) 
(2,2) 
(3,3) 
+0

對於遲到接受抱歉。感謝您的幫助! –

+0

不用擔心!很高興我能幫上忙 –