البرمجة

حلاقة مشكلة تكرار المصفوفات في MATLAB

في محاولتك لتكرار المصفوفة “a” خمس مرات باستخدام الأمر repmat في MATLAB، وجدت نفسك تواجه تحدياً في الحصول على النتيجة المرجوة. يبدو أن المشكلة تكمن في كيفية ترتيب البيانات بعد التكرار. بدلاً من الحصول على مصفوفة وحيدة البُعد، حصلت على مصفوفة ثنائية الأبعاد.

لتحقيق النتيجة المرجوة، يمكنك استخدام الأمر reshape بعد القيام بعملية التكرار. الفكرة هي تكرار المصفوفة أولاً ثم تغيير شكلها إلى مصفوفة واحدة البُعد. يمكنك القيام بذلك كما يلي:

matlab
a = [1 2 3]; b = repmat(a, 1, 5); result = reshape(b, 1, []);

سينتج هذا الكود المصفوفة “result” التي تحتوي على النتيجة المطلوبة:

matlab
result = 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

باستخدام أمر repmat، قمت بتكرار المصفوفة “a” مرة واحدة في الاتجاه الأفقي لخمس مرات. ثم، باستخدام أمر reshape، قمت بتغيير شكل المصفوفة الناتجة إلى مصفوفة واحدة البُعد.

المزيد من المعلومات

تتعلق المشكلة التي واجهتك في MATLAB بطريقة تنظيم البيانات بعد استخدام الأمر repmat. يعتمد ذلك على كيفية تحديد البُعد واتجاه التكرار.

الأمر repmat(a, 5, 1) يقوم بتكرار المصفوفة “a” خمس مرات في الاتجاه العمودي، ولكن النتيجة كانت مصفوفة ثنائية الأبعاد بدلاً من مصفوفة واحدة البُعد. لتحقيق النتيجة المرجوة، يمكنك استخدام أمر repmat(a, 1, 5) لتكرار “a” خمس مرات في الاتجاه الأفقي.

بالنسبة للكود الذي قدمته في الرد السابق، استخدمت أمر reshape لتحويل المصفوفة ثنائية الأبعاد إلى مصفوفة واحدة البُعد. أيضاً قمت بتصحيح ترتيب التكرار في الأمر repmat.

الكود:

matlab
a = [1 2 3]; b = repmat(a, 1, 5); result = reshape(b, 1, []);

يقوم بتحقيق النتيجة المطلوبة بشكل صحيح.

زر الذهاب إلى الأعلى