PDA

View Full Version : custom sort



hamidkor
چهارشنبه 25 تیر 1393, 15:47 عصر
باسلام و تقدیم احترام،

دوستان عزیز میخواستم سوال کنم که تو متلب واسه مرتب سازی سفارشی تمهیداتی اتخاذ شده یا اینکه باید کد خاصی نوشته بشه؟

همانند سورت سفارشی داده ها در اکسل میخواهیم در ابتدا ردیف اول بعد ردیف دوم و در آخر ردیف سوم (ویابالعکس) از کوچک به بزرگ مرتب شده و همزمان مقادیر متناظر با آنها نیز تغییر یابد. بعنوان مثال داده های زیر را در نظر بگیرید:


30
300
1000
0.66
0.45
0.75


40
200
4000
0.06
0.10
0.18


10
100
3000
0.75
0.11
0.91


20
400
2000
0.54
0.85
0.53


حال میخواهیم که بدینصورت تبدیل شوند:


10
100
3000
0.75
0.11
0.91


20
400
2000
0.54
0.85
0.53


30
300
1000
0.66
0.45
0.75


40
200
4000
0.06
0.10
0.18



و یا بدین صورت:


30
300
1000
0.66
0.45
0.75


20
400
2000
0.54
0.85
0.53


10
100
3000
0.75
0.11
0.91


40
200
4000
0.06
0.10
0.18



باتشکر و تقدیم مجدد احترام

rahnema1
پنج شنبه 26 تیر 1393, 09:32 صبح
سلام
دستور sortrows همون چیزیه که شما می خواهید

hamidkor
پنج شنبه 26 تیر 1393, 12:31 عصر
سلام دوست گرامی،

درست ولی همه مثالای هلپ وجاهای مختلف تو نت واسه یه ستون و حالا چندتا ستون متناظر هستن! ولی تو مسئله ما سه ستون بترتیب و اولویت باید سورت بشن! بازم بیشتر بررسی میکنم و امیدوارم کار با این دستور را بیافته.

rahnema1
پنج شنبه 26 تیر 1393, 13:16 عصر
سلام دوست گرامی،

درست ولی همه مثالای هلپ وجاهای مختلف تو نت واسه یه ستون و حالا چندتا ستون متناظر هستن! ولی تو مسئله ما سه ستون بترتیب و اولویت باید سورت بشن! بازم بیشتر بررسی میکنم و امیدوارم کار با این دستور را بیافته.
سلام
ببینید داده هایی که شما گذاشتید اولیش که داده های اصلیه ، دومی بر اساس ستون اول مرتب شده و سومی هم بر اساس ستون سوم، درسته؟
حالا شما از چه روشی استفاده می کنید که درست انجام نمیشه

rahnema1
پنج شنبه 26 تیر 1393, 13:32 عصر
برای اینکه به ترتیب بر اسا اولویت ستونها مرتب بشه لازمه مثلا در ستون قبلی داده تکراری وجود داشته باشه تا اگه خواست ستون بعدی را مرتب کنه بدونه بر چه اساسی مرتب کنه مثل این مثال که به ترتیب اولویت ستون اول و دوم مرتب میشن

a=[
10 6 .56;
20 4 .98;
10 3 .45;
20 8 .15];

sortrows(a,[1 2])

hamidkor
پنج شنبه 26 تیر 1393, 14:42 عصر
حق با شماست دوست عزیز من توجه نکرده بودم! یکی دو مقال از جاهای دیگه دیدم فک کردم پیچیده باشه ولی خیلی ساده بودش!



(b= sortrows(a,[1 -2 -3]


یااینکه:


(b= sortrows(a,[3 -2 -1]