کلیدستان

نسخه‌ی کامل: صعودی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
باسلام و خسته نباشید
چطور می توان یک بردار را به صورت صعودی مرتب کرد به طوریکه یک بردار دیگه با همان سایز هم به این بردار مرتبط است و اطلاعات آن نیز به مساوات تغیرات بردار اول تغییر کند مثلا داریم:

کد:
r=[5 3 2 1]

و بردار دومی که با بردار بالایی مرتبط است

کد:
g=[8 9 5 4]

ارتباطشان یعنی عدد 5 از بردار اول دارای درایه 4 و یا عدد 3 از بردار اول دارای درایه 5 است .یعنی هدف این است بردارr به ترتیب صعودی مرتب شود و به مساوات آن المانهای نظیرش در g هم تغییر نکند یعنی جواب خروجی شود:

کد:
r=[1 2 3 5]
g=[4 5 9 8]
سلام.
دو بردار A و B رو در نظر می گیریم. A رو به طور صعودی تعریف می کنیم و سپس B را متناسب با تغییرات A ، تغییر می دهیم (A و B را به گونه ای تعریف کردم که چک کردن نتیجه، راحت باشد).
کدهای متلب :

کد:
clear all
close all
clc

A=[4 6 2 9 3];
B=[14 16 12 19 13];

[A,IX]=sort(A)

A_length=length(A);
C=B;
for nn=1:A_length
    B(nn)=C(IX(nn));
end
B

نکته مهم کدها، در استفاده از دستور sort به صورتی است که IX را هم، علاوه بر A مرتب شده، به دست بیاوریم. IX برداری است که نحوه جابجایی عناصر بردار A را برای ما مشخص می کند (با نوشتن شماره عنصرها).
نتیجه اجرای کد متلب بالا :

کد:
A =

     2     3     4     6     9


IX =

     3     5     1     2     4


B =

    12    13    14    16    19

موفق باشید. Smile