بحاجة إلى بعض المساعدة في فهم أمر matlab `cat` بأبعاد عالية

StackOverflow https://stackoverflow.com/questions/2609495

سؤال

الأوامر

a = magic(3);
b = pascal(3); 
c = cat(4,a,b);

إنتاج مجموعة 3-by-3-by-1-by-2.

لماذا النتيجة 3-3-1-2 عندما يكون البعد 4?

هل كانت مفيدة؟

المحلول

كلاهما a و b هي مصفوفات ثنائية الأبعاد بحجم 3 في 3. عندما تقوم بتسلسلها على طول البعد الرابع ، فإن البعد الثالث المتداخل هو Singleton (أي 1). لذا c(:,:,1,1) ستكون المصفوفة الخاصة بك a و c(:,:,1,2) ستكون المصفوفة الخاصة بك b.

هنا رابط لبعض الوثائق قد يساعد ذلك في فهم المصفوفات متعددة الأبعاد.

تعديل:

ربما سيساعد ذلك على التفكير في هذه الأبعاد الأربعة من حيث أن البشر يمكن أن نتعلق بسهولة أكبر ...

لنفترض أن الأبعاد الأربعة في المثال تمثل ثلاثة أبعاد في الفضاء (x, y, ، و z) بالإضافة إلى وقت البعد الرابع. تخيل أنني أخذت عينات من درجة الحرارة في الهواء في عدد من النقاط في الفضاء في وقت واحد. يمكنني تذوق درجة حرارة الهواء في شبكة تضم جميع مجموعات من ثلاثة x المواقف ، ثلاثة y المواقف وواحد z موقع. سيعطيني ذلك شبكة 3-3-by-1. عادة ، ربما نقول فقط أن البيانات موجودة في شبكة 3 في 3 ، متجاهلة البعد المفرد.

ومع ذلك ، دعنا نقول أنني الآن أخذ مجموعة أخرى من العينات في هذه النقاط في وقت لاحق. لذلك أحصل على شبكة أخرى 3 في 3 في 1 في نقطة ثانية. إذا قمت بتسلسل هذه المجموعات من البيانات معًا على طول البعد الزمني ، فستحصل على مصفوفة 3-3-by-1-1-by-2. البعد الثالث هو Singleton لأنني أخذت عينات فقط في واحد z القيمة.

لذلك ، في المثال c=cat(4,a,b), ، نحن نتسلل اثنين من المصفوفات على طول البعد الرابع. المصفوفتان هي 3 في 3 ، مع البعد الثالث يفترض ضمنيًا أن يكونا مفردة. ومع ذلك ، عند التسلسل على طول البعد الرابع ، ينتهي بنا المطاف إلى إظهار أن البعد الثالث لا يزال موجودًا من خلال إدراج حجمه كـ 1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top