दिलचस्प पोस्ट
मैं स्थानीय होस्ट के लिए स्व-हस्ताक्षरित प्रमाणपत्र कैसे बना सकता हूं? किसी डेटा फ्रेम में कॉलम को पुन: क्रमित कैसे किया जाता है? आरटीटीआई कितना महंगा है? आईओएस पर एक ईमेल पता मान्य है की जाँच करें क्या कुछ टेक्स्ट वाले तत्वों के लिए कोई सीएसएस चयनकर्ता है? XML पार्सिंग के लिए सर्वश्रेष्ठ नोड मॉड्यूल PHP HTML DomDocument getElementById समस्याएं थ्रेड। 1 मिलीसेकंड से कम के लिए सो जाओ संख्या तालिका बनाने और बनाने का सबसे अच्छा तरीका क्या है? क्यों शामिल है () ऑपरेटर नाटकीय ढंग से संस्था फ़्रेमवर्क के प्रदर्शन को नीचा? एक धुंधला ओवरले दृश्य बनाना सॉर्ट किए गए मैट्रिक्स पर चयन एल्गोरिदम लिनक्स पर केबीआईटीआईटी (और) मिलते हैं यह चार क्या है? 65279 '' वॉली अनुरोध में कस्टम हेडर कैसे सेट करें

एक मैट्रिक्स के लिए एक इंडेक्स के रूप में एक वेक्टर का उपयोग करें

मैं डेटा को एक एन-आयामी सरणी (चर आयाम आकार) में पढ़ने के लिए MATLAB फ़ंक्शन लिख रहा हूं। मुझे मैट्रिक्स में एक विशिष्ट बिंदु तक पहुंचने में सक्षम होना चाहिए (उदाहरण के लिए, इसे लिखना या पढ़ना), लेकिन मुझे समय से पहले नहीं पता है कि कितने अनुक्रमित निर्दिष्ट करना चाहिए।

वर्तमान में मेरे पास एक current_point वेक्टर है जो मुझे प्रत्येक सूचकांक को निर्दिष्ट करने के लिए पुनरावृत्त करता है, और एक max_points वेक्टर जो कि सरणी के आकार को निर्दिष्ट करता है। इसलिए, उदाहरण के लिए अगर मैं 1000-by-15-by-3, max_points = [1000 15 3] एक 3-आयामी सरणी चाहता हूं, और वर्तमान [1, 1, 1] से [1000, 15, 3] [1, 1, 1] से max_points = [1000 15 3] [1000, 15, 3] ( [1, 1, 1] -> [1000, 1, 1] -> [1, 2, 1] -> [1000, 2, 1] -> …)। मैं क्या करने में सक्षम होना चाहता हूं, वर्तमान में मैट्रिक्स के सूचकांक के समान फ़ीड है:

 output_matrix(current_point) = val 

लेकिन जाहिरा तौर पर कुछ output_matrix([1 2 3]) = val सिर्फ outputmatrix(1:3) = 30 निर्धारित करेगा। मैं सिर्फ डमी वैरिएबल का उपयोग नहीं कर सकता क्योंकि कभी-कभी मैट्रिक्स को 3 इंडेक्स, दूसरी बार 4, दूसरी बार 2, आदि की आवश्यकता होगी, इसलिए चर लंबाई का एक सदिश वास्तव में मुझे यहाँ क्या चाहिए। क्या सूचक के अंक के रूप में एक वेक्टर का उपयोग करने का एक आसान तरीका है?

वेब के समाधान से एकत्रित समाधान "एक मैट्रिक्स के लिए एक इंडेक्स के रूप में एक वेक्टर का उपयोग करें"

एक रैखिक सूचकांक बनाने के लिए SUB2IND फ़ंक्शन का उपयोग करना इस समस्या का सामान्य समाधान है, जैसा कि इस बारीकी से संबंधित प्रश्न में दिखाया गया है। आप SUB2IND को कॉल करने के बजाय खुद को रैखिक अनुक्रमणिका की गणना कर सकते हैं।

हालांकि, आपका मामला उन अन्य सवालों के मुकाबले अधिक आसान हो सकता है जिनसे मैंने लिंक किया था। यदि आप केवल अपने current_point वेक्टर के साथ एक बिंदु को अनुक्रमणित कर रहे हैं (यानी यह आपके एन-आयामी मैट्रिक्स में सब्सक्रिप्शन का एक n- तत्व वेक्टर है), तो आप एक सरल समाधान का उपयोग कर सकते हैं जहां आप current_point को सब्सक्रिप्शन की सेल सरणी में परिवर्तित कर सकते हैं फ़ंक्शन NUM2CELL का उपयोग करके और इसका उपयोग कॉमा से अलग इंडेक्स की सूची बनाने के लिए करता है। उदाहरण के लिए:

 current_point = [1 2 3 ...]; %# A 1-by-n array of subscripts subCell = num2cell(current_point); %# A 1-by-n cell array of subscripts output_matrix(subCell{:}) = val; %# Update the matrix point 

ऑपरेशन subCell{:} टाइपिंग subCell{1},subCell{2},... के बराबर बनाता है, जो subCell{1},subCell{2},... टाइपिंग के बराबर है current_point(1),current_point(2),...

मुझे पता है कि यह बहुत देर हो चुकी है, लेकिन किसी के लिए यह विषय मिलेगा। सबसे आसान तरीका है कि मेरे लिए काम करना है: diag(A (x(:),y(:)) ) ;

दुर्भाग्य से यह केवल तभी काम करता है जब आपको मैट्रिक्स से मूल्य प्राप्त करने की आवश्यकता हो, न कि मूल्यों को बदलने के लिए

आप sub2ind से रेखीय सूचकांक प्राप्त करने के लिए sub2ind फ़ंक्शन का उपयोग कर सकते हैं।

उदाहरण:

 A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 selectElement={2,3}; %# get the element at position 2,3 in A. indx=sub2ind(size(A),selectElement{:}); A(indx) ans = 10 

उपरोक्त उदाहरण में, मैंने एक cell रूप में सबस्क्रिप्ट (किसी भी संख्या में आयाम) हो सकते हैं यदि आपके पास इसे सदिश के रूप में संग्रहीत किया गया है, तो इसे एक सेल में कनवर्ट करने के लिए केवल num2cell() का उपयोग करें

अब आप आसानी से A(indx)=value; रूप में एक मान निर्दिष्ट कर सकते हैं A(indx)=value; । मैंने आपके सामान्य से उत्तर देने के लिए अलग-अलग चर का उपयोग किया है, लेकिन यह विचार समान है और आपको केवल चर नामों को बदलने की जरूरत है

आपने अपनी पोस्ट में यह भी उल्लेख किया है कि आप (1,1,1) , 1, (1,1,1) से कुछ मान (1000,15,3) , (1000,15,3) , (1000,15,3) , 3 (1,1,1) तक पाशन कर रहे हैं और इन सभी बिंदुओं के लिए एक मान निर्दिष्ट कर रहे हैं। यदि आप स्तंभों के साथ पाशन कर रहे हैं, तो आप एक सदिश समाधान के साथ इस पूरे ऑपरेशन की जगह ले सकते हैं।

चलो finalElement={1000,15,3} लूप का अंतिम चरण हो। पहले के रूप में, रैखिक सूचक को इस रूप में खोजें

 index=sub2ind(size(A),finalElement{:}); 

अब अगर आपके पास एक वैक्टर के रूप में संग्रहीत किए गए values , तो values , आप इसे केवल एक ही चरण में निर्दिष्ट कर सकते हैं

 A(1:index)=values;