كيف يمكنني فرز مصفوفة ثنائية الأبعاد في MATLAB فيما يتعلق بعمود واحد؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أرغب في فرز مصفوفة وفقًا لعمود معين.هناك sort وظيفة، ولكنه يفرز كافة الأعمدة بشكل مستقل.

على سبيل المثال، إذا كانت المصفوفة الخاصة بي data يكون:

 1     3
 5     7
-1     4

ثم سيكون الإخراج المطلوب (الفرز حسب العمود الأول) هو:

-1     4
 1     3
 5     7

لكن إخراج sort(data) يكون:

-1     3
 1     4
 5     7

كيف يمكنني فرز هذه المصفوفة حسب العمود الأول؟

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

المحلول

اعتقد ان فرز الوظيفة هي ما تبحث عنه.

>> sortrows(data,1)

ans =

    -1     4
     1     3
     5     7

نصائح أخرى

بديل ل sortrows(), ، والتي يمكن تطبيقها على سيناريوهات أوسع.

  1. احفظ مؤشرات الفرز للصف/العمود الذي تريد الترتيب حسب:

    [~,idx]=sort(data(:,1));
    
  2. أعد ترتيب كافة الصفوف/الأعمدة وفقًا للمؤشرات التي تم فرزها مسبقًا

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