ورود

View Full Version : استخراج بردارهای مستقل خطی



saeidmscs
پنج شنبه 28 خرداد 1394, 14:56 عصر
سلام وقت دوستان بخیر

تو برنامه ای که دارم مینویسم، باید در یک قسمت بردارهای مستقل خطی رو تشخیص بدم(برنامه یه روش تحلیل رمزه که قسمتیش این موضوع رو داره)


الان نیازی که من دارم اینه که مثلا 350 تا بردار دارم(نهایتا 5 عنصری / درایه ها فقط 0 یا 1 هستن ) و میخوام اونهایی که نسبت به همدیگه مستقل خطی هستن رو استخراج کنم.


من برای کتابخانه های مختلف سرچ کردم اما چیزی یافت نشد

از کمکتون پیشاپیش ممنونم

rahnema1
پنج شنبه 28 خرداد 1394, 15:22 عصر
سلام
برای پیدا کردن بردارهای مستقل خطی می شه از دستور rref استفاده کرد
مثلا یک ماتریس داریم به نام a با 5 سطر و 350 ستون که هر ستون نماینده یک بردار هست و مثلا بردار ها هم از صفر و یک تشکیل شدند

a = randi([0 1], 5, 350);
[~ ,index] = rref(a);
b = a(:,index);

index برای ما شماره ستونهایی را نشون میده که مستقل خطی هستند و بردارهای مستقل خطی هم در b ذخیره می شه
در منبع زیر توضیحات خوبی داده شده:
http://stackoverflow.com/questions/27907115/extracting-the-largest-set-of-linearly-independent-vectors-from-a-set-of-vectors

saeidmscs
پنج شنبه 28 خرداد 1394, 15:56 عصر
سلام
برای پیدا کردن بردارهای مستقل خطی می شه از دستور rref استفاده کرد
مثلا یک ماتریس داریم به نام a با 5 سطر و 350 ستون که هر ستون نماینده یک بردار هست و مثلا بردار ها هم از صفر و یک تشکیل شدند

a = randi([0 1], 5, 350);
[~ index] = rref(a);
b = a(:,index);

index برای ما شماره ستونهایی را نشون میده که مستقل خطی هستند و بردارهای مستقل خطی هم در b ذخیره می شه
در منبع زیر توضیحات خوبی داده شده:
http://stackoverflow.com/questions/27907115/extracting-the-largest-set-of-linearly-independent-vectors-from-a-set-of-vectors

واقعا ممنون.

آیا MATLAB میتونه روی چند جمله ایها کار کنه؟
این بردارها ضرایب چند جمله هایی به شکل cxi+cxj+cxk+cxm+cxn+c هستن ( یعنی c=1 یا c=0 و m,n,k,i,j هم اندیس x هستن (نه جمله ضربی)) .

من 350 تا چند جمله ای خطی دارم و میخوام ببینم کدوم هاشون نسبت به هم مستقل خطی هستن.
اندیس x ها از 1 تا 64 هستش (هر اندیس نشون دهنده یک بیت از کلید)

متاسفانه هیچ چی و کتابخونه ای و ... پیدا نشد

ممنونم

rahnema1
پنج شنبه 28 خرداد 1394, 16:07 عصر
دقیقا متوجه نشدم منظورتون چیه
یه چیزی شبیه همون ماتریس بالا که 5 در 350 هست مگه منظورتون را برآورده نمی کنه

saeidmscs
پنج شنبه 28 خرداد 1394, 16:13 عصر
دقیقا متوجه نشدم منظورتون چیه
یه چیزی شبیه همون ماتریس بالا که 5 در 350 هست مگه منظورتون را برآورده نمی کنه

فکر کنم چرا

ممنونم

saeidmscs
پنج شنبه 28 خرداد 1394, 16:15 عصر
راستش الان که اجرا میکنم، میبنم که index فقط شامل ستون های 1 - 64 هستش!

rahnema1
پنج شنبه 28 خرداد 1394, 16:18 عصر
یعنی 64 ستون را به عنوان مستقل خطی بیرون کشیده. درسته؟

saeidmscs
پنج شنبه 28 خرداد 1394, 16:21 عصر
من بازه اعداد تصادفی رو بیشتر کردم
پشت سر هم، چند بار اجرا کردم (ماتریس 5*350 رو)

index فقط ستون های 1 تا 5 رو داره

saeidmscs
پنج شنبه 28 خرداد 1394, 16:22 عصر
یعنی 64 ستون را به عنوان مستقل خطی بیرون کشیده. درسته؟

بله گویا
فقط نمیدونم چرا اندیس های این ستون های مستقل خطی، تو بیشتر اجراها، 1 - 64 ( یا در حالت 5 تایی: 1-5 ) هستش

rahnema1
پنج شنبه 28 خرداد 1394, 16:25 عصر
من در کد بالا یک کاما کم گذاشته بودم الان درستش کردم یه بار دیگه امتحان کنید

saeidmscs
پنج شنبه 28 خرداد 1394, 16:30 عصر
من در کد بالا یک کاما کم گذاشته بودم الان درستش کردم یه بار دیگه امتحان کنید

الان هم تو همه اجراها، index فقط شامل 1-5 هستش

rahnema1
پنج شنبه 28 خرداد 1394, 16:38 عصر
همیشه 1 تا 5 ممکنه نشه بعضی وقتها نتیجه 2 تا 6 می شه علتش اینه که همه اونها که حذف می شن مستقل خطی هستند
مثلا با 35 تا امتحان کنید چند بار اجرا کنید

a = randi([0 1], 5, 35);[~ ,index] = rref(a)

saeidmscs
پنج شنبه 28 خرداد 1394, 16:48 عصر
همیشه 1 تا 5 ممکنه نشه بعضی وقتها نتیجه 2 تا 6 می شه علتش اینه که همه اونها که حذف می شن مستقل خطی هستند
مثلا با 35 تا امتحان کنید چند بار اجرا کنید

a = randi([0 1], 5, 35);[~ ,index] = rref(a)


درسته. وقتی اعداد فقط 0 و 1 هستن نتیجه بنظر درسته اما شما با اعداد بین 1-10 امتحان کنید
بیشتر اوقات همون index میشه 1-5

rahnema1
پنج شنبه 28 خرداد 1394, 16:58 عصر
فکر کنم به خاطر اینه که تعداد سطر ها 5 تا هست که نهایتا این الگوریتم این جور تشخیص میده که به غیر از 5 تای اولی بقیه باید حذف بشن

saeidmscs
پنج شنبه 28 خرداد 1394, 17:26 عصر
فکر کنم به خاطر اینه که تعداد سطر ها 5 تا هست که نهایتا این الگوریتم این جور تشخیص میده که به غیر از 5 تای اولی بقیه باید حذف بشن

محبت کردید
التماس دعا دارم