reza abbaspour 23 اشتراک گذاری ارسال شده در 13 بهمن، ۱۳۹۳ سلام اساتید محترم من میخواستم یک ماتریس یک سطری با 15 عنصر یا درایه های صفر و یک تصادفی تولید کنم و سپس با احتمال خطای مثلا یک سوم که بر روی درایه های این ماتریس اعمال میشه یک ماتریس دیگری را بسازم به شکل زیر نوشتم که با خطای یک سوم صفرها را به یک و یک ها را به صفر تبدیل کند ولی در حلقه فور دومی چکار کنم که این احتمال بصورت راندوم صفر و یکها رو تغییر بدهد برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام و سوال دیگر اینکه اگر بخواهم تعداد آرایه ها رو از 15 مثلا به ده میلیارد ببرم خطای مموری میدهد برای رفع این مشکل چکار می تونم انجام بدهم. از راهنمائیتان متشکرم [/left] 1 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ سلام اساتید محترممن میخواستم یک ماتریس یک سطری با 15 عنصر یا درایه های صفر و یک تصادفی تولید کنم و سپس با احتمال خطای مثلا یک سوم که بر روی درایه های این ماتریس اعمال میشه یک ماتریس دیگری را بسازم به شکل زیر نوشتم که با خطای یک سوم صفرها را به یک و یک ها را به صفر تبدیل کند ولی در حلقه فور دومی چکار کنم که این احتمال بصورت راندوم صفر و یکها رو تغییر بدهد برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام و سوال دیگر اینکه اگر بخواهم تعداد آرایه ها رو از 15 مثلا به ده میلیارد ببرم خطای مموری میدهد برای رفع این مشکل چکار می تونم انجام بدهم. از راهنمائیتان متشکرم سلام دوست عزیز برای تولید اعداد رندوم صحیح می تونین از randi استفاده کنین. فرقی هم نمی کنه تمام مقادیر رو یه جا تولید کنین یا داخل حلقه یکی یکی ایجاد کنین، نتیجه کاملا مشابه هست: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام اما برای سوال دومتون، ماتریس با فرمت دابل برای هر داریه 8 بایت نیاز داره، یعنی برای داشتن ماترسی با این ابعاد اگه درست نوشته باشم به انقدر گیگ رم احتیاج دارین: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام single و اینا هم جواب نمیده، شاید از sparse بشه استفاده کرد. 1 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ سلام دوست بزرگوار بسیار ممنون و متشکرم که برای سوال بنده وقت گذاشتین اون خطای مموری که برای مقادیر زیاد بوجود میاد مربوط به خود مطلب هست یا مموری خود کامپیوتر؟ آیا روشی نیست که این مشکل رو خود مطلب بتونه رفع کنه؟ من یروشی به ذهنم میاد که مثلا برای این مقدار یعنی آرایه یک در ده میلیارد از حلقه فور استفاده کنم و این ماتریس تک سطری رو به چندین ماتریس بشکنم که در حافظه اجرایی مطلب بگنجه مثلا بجای 10.000.000.000×1 از هزار تا ماتریس 10.000.000×1 استفاده کنم گفتم شاید روش یا دستور ساده تری باشه که از شما استاد کمک خواستم زنده باشید 2 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ و برای سوال اولم مشکل من در تولید اعداد تصادفی نیست همون کد که نوشته ام در حلقه اولی اعداد تصادفی صفر و یکی را که میخوام برای کانال مخابراتی یا مدولاسیون میتونم تولید نمایم ولی میخوام در خروجی این ماتریسی که با صفر و یک تولید شده را با خطای مثلا یک سوم در خروجی نمایش بدهم یعنی کانال با همون احتمال یک سوم در خروجی ماتریس اولیه را که تولید کرده ایم دچار خطا نماید بعضی از صفر و یک ها را تغییر دهد. حالا در حقله دوم هم این تغییرات رو با احتمال یک سوم وارد کردم ولی این درست با فاصله ثابت این خطارو اعمال می کنه در حالیکه این اعمال خطا باید راندوم یا تصادفی باشد . درود برشما استاد 2 لینک به دیدگاه
ehsan_faal 561 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ سلام.دوست عزیز شما میتونی بعد از تولید اعداد رندوم یه حلقه for بذاری و با استفاده از rand که یه عدد رندوم بین 0 و 1 میده بگی اگه این عدد از یک سوم مثلا کوچکتر بود درایه فعلی not بشه و اگه نبود همون حالت قبلی بمونه.در مورد اون ماتریس بزرگی هم که گفتی به نظرم اگه بیای هر مثلا 1000 تاش رو بریزی توی یه سطر از یه فایل و بعد از تکمیلش هر وقت به اون ماتریس نیاز داشتی بیای و از اون فایلی که ذخیره کردی بخونی، به نظرم دیگه مشکل حافظه رفع میشه با این روش. 3 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ مرسی دوست عزیز اما اینکه بگیم از یک سوم کوچکتر باشه که راندوم تولیدی ما مابین صفر و یک کلا از یک سوم کوچکتره پس همشون نات میشن و همون قسمت دوم هم همون شکستن ماتریسهاست خواستم اگه روش ساده تری باشد که ماتریسو نشکنیم چون همون شکستن ماتریس و دوباره بازخوانیش یکمی پیچیده میشه درود بر شما 2 لینک به دیدگاه
ehsan_faal 561 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ منظورتون رو متوجه نشدم،چه جوری کلا همشون نات میشن؟ مثلا اگه رندوم به ما عدد 0.68 رو بده خوب این توی دو سوم باقیمونده از احتمال قرار میگیره پس درایه مورد نظر تغییر نمیکنه ،درسته؟ 3 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ خوب سوال منم همینجاست که چجوری این احتمال رو به برنامه ربط بدهم یعنی در همون ماتریس بالا که 15 درایه صفر و یک دارد چجوری با احتمال مثلا یک پنجم از توی 15 تا عنصر 3 تا عنصر ماهیتشون عوضه بشه 2 لینک به دیدگاه
ehsan_faal 561 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ این چیزی که الان گفتید کلا با حرف اولتون فرق داره.شما یه for میذاری از یک تا 15.داخلش یه if میذاری که شرطش اینجوری باشه: اگه رند کوچکتر مساویه احتمال پس شرط درسته و درایه فعلی نات بشه.متاسفانه الان متلب ندارم رو سیستم تا کدش رو بذارم واستون. اما اگه میخوای که فقط سه تا از 15 تا با احتمال یک سوم عوض بشن باید قبلش اون سه تا رو هم با یه رندوم دیگه از 15 تا جدا کنی.مثلا یه رندپرم با ورودی 15 بگیری بعد سه تا درایه اولش رو به عنوان اندیسای منتخب ورداری. 3 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ کاملا درسته حالا این احتمال رو چی قرار می دهیم؟ یک پنجم یا همان 0.2 تا شرط رو بررسی کنه؟ 2 لینک به دیدگاه
reza abbaspour 23 مالک اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ اگر احتمال خطای یک سوم رو اعمال کنیم یعنی باید این ماتریس 15 عنصری رو به 5 قسمت تقسیم کنیم که هرکدومش 3 عنصر دارد و حالا باید یک راندمی برای این حلقه تعریف کنیم که از هر 5 قسمت یک عنصر را بصورت تصادفی انتخاب کرده و ماهیت انرا تغییر بدهد. و طبق توضیح شما من متوجه نشدم منظور از مقدار احتمال در این حلقه چیست و چجوری باید به حلقه اضافه نماییم تا شرط رو بررسی کنه؟ 2 لینک به دیدگاه
ehsan_faal 561 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ منظور من یه چیزی توی این مایه هاست: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 2 لینک به دیدگاه
ehsan_faal 561 اشتراک گذاری ارسال شده در 14 بهمن، ۱۳۹۳ فکر میکنم تازه منظورتون رو متوجه شده باشم! منظورتون از احتمال یک سوم اینه که از هر سه تا درایه یکی نات میشه،پس باید دسته بندی هایه سه تایی داشته باشیم. تا این جا که فکر نمیکنم مشکلی باشه. اما حالا برای این که توی این دسته های کوچیکه جدید یه دونه رو انتخاب کنیم کافیه یه randi بگیریم از یک تا تعداد درایه ای ماتریس های جدید. بعد بگیم که درایه ای با این اندیس باید تغییر کنه.راحت میشه کدشو نوشت ولی من الان متلب ندارم که بتونم بیشتر راهنماییتون کنم. 2 لینک به دیدگاه
ارسال های توصیه شده