2011-09-08 19 views
7

मेरे पास एक त्रि-आयामी सरणी है, और मैं एक विशिष्ट मान ढूंढने और तीन निर्देशांक प्राप्त करने में सक्षम होना चाहता हूं।MATLAB: बहुआयामी सरणी में मान के निर्देशांक ढूँढना

उदाहरण के लिए, अगर मेरे पास है:

A = [2 4 6; 8 10 12]

A(:,:,2) = [5 7 9; 11 13 15]

और मैं कहाँ 7 है खोजना चाहते हैं, मैं निर्देशांक प्राप्त करना चाहते हैं i = 1j = 2k = 2

मैं find(A == 7) की विविधता की कोशिश की है, लेकिन मुझे अभी तक कहीं भी नहीं मिला है।

धन्यवाद!

उत्तर

12

समारोह आप की तलाश ind2sub है:

[i,j,k]=ind2sub(size(A), find(A==7)) 
i = 
    1 
j = 
    2 
k = 
    2 
+0

बहुत बढ़िया, यह वही है जो मैं ढूंढ रहा था। धन्यवाद! –

0

आप एक सरणी में अशून्य तत्वों का पता लगाने के लिए मिल का उपयोग कर सकते हैं, लेकिन यह गणित का एक छोटा सा की आवश्यकता है। प्रलेखन से:

[row,col] = find(X, ...) मैट्रिक्स एक्स में देता अशून्य प्रविष्टियों की पंक्ति और स्तंभ सूचकांक इस वाक्य रचना जब विरल मैट्रिक्स के साथ काम करने में विशेष रूप से उपयोगी है। यदि एक्स एन> 2 के साथ एक एन-आयामी सरणी है, तो कॉलम में कॉलम के लिए रैखिक सूचकांक होते हैं। उदाहरण के लिए, 5-बाय -7-बाय-3 सरणी एक्स के लिए एक्स (4,2,3) पर एक गैर-शून्य तत्व के साथ, पंक्ति में 4 और 16 में कॉल प्राप्त करें। यही कारण है, (पेज 1 में 7 कॉलम) + + (पेज 3 में 2 कॉलम) = 16.

( पेज 2 में 7 कॉलम) मैट्रिक्स M आयाम a x b x c, तो कुछ के लिए इंडेक्स (i,j,k) है मूल्य x हैं:

[row,col] = find(A==x); 
i = row; 
j = mod(col,b); 
k = ceil(col/b); 
संबंधित मुद्दे