अच्छा प्रश्न +1 के कंप्यूटर के बिंदु से एक सरणी डेटा संरचना के बारे में सोच की एक "अधिक सही" तरीका है।
निश्चित रूप से एक मैटलैब प्रोग्रामिंग परिप्रेक्ष्य से, कॉलम वैक्टर के अनुक्रम के रूप में मैट्रिक्स के बारे में सोचना सबसे अच्छा है। क्यूं कर? क्योंकि मैटलैब उन्हें आपके कंप्यूटर मेमोरी में आवंटित करता है। यही है, मैट्रिक्स के किसी भी दिए गए कॉलम में दो अनुक्रमिक तत्व स्मृति में एक दूसरे के बगल में आवंटित किए जाएंगे। इसे कभी-कभी "कॉलम-प्रमुख ऑर्डर" के रूप में जाना जाता है, और फोर्ट्रान, आर और जूलिया जैसी भाषाओं में इसका उपयोग किया जाता है। इसके विपरीत, आश्चर्यजनक रूप से, "पंक्ति-प्रमुख आदेश" कहा जाता है, और इसका उपयोग सी और पायथन में किया जाता है।
इसका निहितार्थ यह है कि पंक्तियों की तुलना में मैट्रिक्स के कॉलम पर प्रदर्शन करने में मैटलैब बहुत तेज होगा। @angainor ने कुछ महीने पहले मेरे एक प्रश्न के लिए great answer प्रदान किया जो इस तथ्य को प्रदर्शित करता है। @ Angainor की अंतर्दृष्टि के आधार पर, यहां चलाने के लिए एक उपयोगी गति परीक्षण है:
M = 1000; %# Number of iterations over each method
T = 1000; %# Number of rows
N = 1000; %# Number of columns
X = randn(T, N); %# Random matrix
%# Loop over the rows of a matrix and perform a sum operation on each row vector
tic
for m = 1:M
for t = 1:T
sum(X(t, :));
end
end
toc
%# Loop over the columns of a matrix and perform a sum operation on each column vector
tic
for m = 1:M
for n = 1:N
sum(X(:, n));
end
end
toc
मेरी मशीन पर, परीक्षण का परिणाम है:
Elapsed time is 9.371870 seconds. %# Looping over rows
Elapsed time is 1.943970 seconds. %# Looping over columns
दूसरे शब्दों में, स्तंभ पर प्रदर्शन किया आपरेशन लगभग हैं पंक्तियों पर किए गए संचालन से 5 गुना तेजी से!
गणितीय परिप्रेक्ष्य से मैं एक अच्छा जवाब देने के लिए खुद पर भरोसा नहीं करता हूं। आप शायद math.stackexchange से कुछ महान अंतर्दृष्टि प्राप्त कर सकते हैं।
स्रोत
2013-01-25 04:42:35
गणितीय रूप से, सम्मेलन कॉलम वैक्टर का भी उपयोग करना है। इसका मतलब है कि एक आंतरिक उत्पाद डब्ल्यूटी एक्स के रूप में लिखा जाता है (जहां टी ट्रांसपोज़ होता है, डब्ल्यू कॉलम वेक्टर होता है, और एक्स एक मैट्रिक्स है)। आप इसे दूसरी तरफ कर सकते हैं, लेकिन आपको उस ऑर्डर को रिवर्स करना होगा जहां आपने इसे देखा था, और इस तरह से अधिकांश यौगिक अभिव्यक्तियों के लिए अधिक उपयोगी है। –