انجمن سایت کلیدستان



یافتن نزدیکترین عدد در ماتریسزمان کنونی: ۱۳۹۵/۰۹/۱۹، ۰۹:۴۸ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: uzman
آخرین ارسال: 4i469x
پاسخ 2
بازدید 1202

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
یافتن نزدیکترین عدد در ماتریس

یافتن نزدیکترین عدد در ماتریس

#1
سلام خسته نباشید
من یه سوال دارم که در زیر کامل توضیح دادم:
من این اعداد رو دارم که تعدادی از اونارو اینجا میذارم
 
0.3750    0.4059    0.45290    0.50    0.5309    0.57790    0.62390    0.639    0.67090    0.7019    0.71790    0.74890    0.7790
 
میخوام به ترتیب دادها رو بر اساس نزدیکترین به 0 به 0.1 به 0.2 به 0.3 به 0.4 و الی آخر انتخاب کنم. انقدر این کار ادامه داشته باشه تا داده ها تموم بشه. به اینصورت که در اینجا نزدیکترین عدد به 0 خود صفر هستش. نزدیکترین عدد به 0.1 هم صفر هستش. من 0 رو برای صفر انتخاب کردم پس مجبورم 0.375 رو  برای 0.1 انتخاب کنم. 0.4059 رو برای 0.2 انتخاب کنم و 0.4529 رو برای 0.3 انتخاب کنم و  0.5 رو برای 0.4 انتخاب کنم و 0.5309 رو برای 0.5 و 0.5779 رو برای 0.6 و 0.7019 رو برای 0.7 و الی آخر. ممکنه چند تعداد از این داده ها به گام هایی از این 0.1 ها نزدیک باشه.باید اولین نزدیکترین رو انتخاب کنم و اونو بذارم کنار و برم دومین نزدیکترین رو به گام بعدی انتخاب کنم.یعنی باید برم اولین عدد رو که به 0 نزدیک هست رو پیدا کنم بذارمش کنار و برم عددی رو که  به0.1 نزدیک هست رو پیدا کنم و بذارم کنارو بعد برم عددی که به 0.3 نزدیک هست رو پیدا کنم و بذارم کنار و الی آخر.فقط نباید عدد تکراری باشه

خیلی ممنون میشم کمک کنین
پاسخ

یافتن نزدیکترین عدد در ماتریس

#2
سلام        شما میتوانید به طریق زیر عمل کنید :   


   اعداد ورودی به صورت یک سری وارد میشوند یعنی به صورت یک ماتریس با ابعاد یک ضرب در تعداد درایه های ماتریس. حال باید تمام اعداد ماتریس رو از عدد 0 کم کنید و اعداد باقیمانده را از کوچک به بزرگ مرتب کرده و عدد اول ماتریس که کوچکترین عدد باقیمانده است و مشخص میکند که دو عدد تفریق شده از هم نزدیک هم بوده اند . برای اعداد بعدی 0.1 و ... هم به همین شکل عمل میشود. ولی سوال اینجاست وقتی کوچکترین باقیمانده را پیدا کنیم چطور به عدد موردنظر دست پیدا کنیم؟ جواب ساده است ، عددی که منهای درایه های ماتریس کردید رو بعلاوه کوچکترین باقیمانده کنید، عدد موردنظر بدست می آید.
دستور کوچکترین --------------min
تا اینجای کار برای هر عدد به طور خاص، بهترین عددی که نزدیک به آن عدد است را از ماتریس ورودی انتخاب کردیم. ولی سوال شما این است که اعدادی که نزدیک به عدد موردنظر هستند، تکراری نباشند. بنابراین وقتی نزدیکترین عدد به صفر رو انتخاب کردید ، اون عدد را در ماتریس ورودی حذف میکنید. با چه دستوری ؟ مثلا اگر ماتریس زیر رو داشته باشیم:





کد:
a=[1,2,12,4,8,6]

دستور زیر رو برای حذف درایه 12 به کار میبریم :




کد:
a(find(a==12))=[]
مثال : میخواهیم نزدیکترین عدد به 0.2 را از ماتریس ورودی زیر پیدا کنیم:




کد:
b=[0.231,0.234,0.121,3,0.54,0.1,0.53,0.123];
ابتدا ماتریس b-0.2  را میسازیم:




کد:
>> c=b-.2

کد:
c =

0.0310 0.0340 -0.0790 2.8000 0.3400 -0.1000 0.3300 -0.0770
در ادامه قدرمطلق ماتریس c را محاسبه و با دستور min ، کوچکترین عدد را محاسبه میکنیم:





کد:
d=min(abs(c))
سپس محل کوچکترین عدد در ماتریس باقیمانده را پیدا کرده و در ماتریس ورودی درایه واقع در آن محل را به عنوان نزدیکترین درایه به 0.2 انتخاب میکنیم:



کد:
f=find(d);

nazdiktain=b(f);
سپس برای مرحله بعدی که عدد دیگر را میخواهیم بررسی کنیم، نزدیکترین عدد به 0.2 را در ماتریس ورودی حذف میکنیم:





کد:
b(f)=[]

 

 
دوست دارم زندگی رو . . . 
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)