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


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

توزیع یکنواخت دوبعدی

#1
با سلام و خسته نباشید،

چگونه میتوان تعدادی نود (عامل) را با  یک توزیع خاص مثلا یکنواخت  در یک دایره با مرکز خاص به طور تصادفی  پخش نمود، به طوریکه فاصله هر کدام از این نودها تا مرکز دایره توسط پارامترهای  rو زاویه تتا  به دست آید؟ به عنوان مثال دستور ( [2,4], random ('uniform' , 0, تعدادی داده را با سایز ماتریس 4*2  با توزیع یکنواخت یک بعدی به ما می دهد، در حالیکه ما میخواهیم همین کار را منتها در فضای دو بعدی  بر روی صفحه دایره ای داشته باشیم؟ لطف میکند اگر در اسرع وقت  پاسخ اینجانب را بدهید. ممنون
پاسخ

توزیع یکنواخت دوبعدی

#2
سلام.
کدهای متلب برای ایجاد تعدادی نقطه به صورت تصادفی (با توزیع یکنواخت) در یک دایره :



کد:
clear all
close all
clc

circle_radius=2;
circle_center=[3 4]; % [x y]

rectangle('Position',[circle_center(1)-circle_radius,circle_center(2)-circle_radius,2*circle_radius,2*circle_radius],'Curvature',[1,1]);

axis([0 7 0 7]);
axis('image');

hold on
nodes_x=0;
nodes_y=0;
for nn=1:30
    a=0;
    b=circle_radius;
    distance=a+(b-a)*rand(1);
    
    a=0;
    b=2*pi;
    teta=a+(b-a)*rand(1);
    
    nodes_x(nn)=distance*cos(teta);
    nodes_y(nn)=distance*sin(teta);
    
    plot(circle_center(1)+nodes_x,circle_center(2)+nodes_y,'rs','LineWidth',5,'MarkerSize',1.5);
end
nodes_x=nodes_x+circle_center(1)
nodes_y=nodes_y+circle_center(1)

سه خط اول کدها،برای عدم تداخل با برنامه های قبلی اجرا شده در نرم افزار متلب می باشد.
متغیر circle_radius ، همان شعاع دایره و متغیر circle_center نیز شامل مختصات نقطه مرکز دایره می باشد.
با دستور rectangle ، ابتدا دایره مورد نظر رو رسم کردیم.
با دستور axis ابتدا حدود محورهای شکل رو مشخص کردیم و سپس در خط بعدی و با تعیین مشخصه image برای دستور axis ، تعیین کرده ایم که اندازه محورهای افقی و عمودی با مقیاس یکسان نمایش داده شود (وگرنه دایره به شکل بیضی به نظر خواهد آمد).
با دستور hold on تعیین کرده ایم که شکل های بعدی، در همین پنجره شکل باز شده، رسم شوند.
مختصات نقاط تصادفی را در دو بردار nodes_x و nodes_y ذخیره خواهیم کرد.
درون حلقه for ، برای فاصله نقطه تصادفی از مرکز دایره و همچنین زاویه آن نقطه با محور، دو مقدار تصادفی ایجاد می کنیم و سپس بر اساس این دو مقدار، مختصات x و y نقطه تصادفی به دست می آید و آن را با دستور plot رسم می کنیم.
دقت شود که a و b ، حدهای بالا و پایین برای تولید عدد تصادفی توسط دستور rand می باشند.

نتیجه اجرای کد متلب بالا :

   

البته بنده مختصات x و y را ذخیره کردم، شما می توانید مقادیر فاصله از مرکز دایره و زاویه را در دو بردار ذخیره کنید (البته باید مختصات x و y نهایی رو تبدیل به مختصات قطبی بکنید تا مختصات قطبی واقعی نقاط رو داشته باشید، زیرا اون مقادیر نسبی هستند).
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط نوترینو90

توزیع یکنواخت دوبعدی

#3
ممنون از راهنماییتون، واقعا مفید بود.
متشکرم
پاسخ
 سپاس شده توسط admin

توزیع یکنواخت دوبعدی

#4
خواهش می کنم.
موفق باشید.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

توزیع یکنواخت دوبعدی

#5
سلام
ببخشید چطورمیتونم 200 نمونه تصادفی درفضا ایجادکنیم البته یه باریک بعدی ویک باردوبعدی
ممنونم
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


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