شبیه سازی شبکه‌های حسگر بی‌سیم در متلب

من چند وقتی دنبال این بودم چطور شبکه‌های حسگر بی‌سیم را در متلب پیاده‌سازی کنم. بالاخره بعد از جستجوهای فراوان به ویدیوی آموزشی فوق‌العاده که توسط گروه پژوهشگران برتر تهیه شده بود دست یافتم. این گروه به وسیله یک وبلاگ نویس به نام سامان اداره می‌شه که دانشجوی دکتری است. آدرس این وبلاگ wsn2022.blogfa.com  است. البته با اینکه در وبلاگ شاید نتوانید چیزای خوب پیدا کنید. اما این ویدیو معرکه است. من این ویدیو ر اینجا قرار می‌دهم. اما اگر شما مانند من از جمله کسانی هستید که با متن راحت‌تر از ویدیو هستند، توصیه می‌کنم این مطلب را تا آخر بخوانید

 

قبل از هر کاری باید یک نسخه از متلب تهیه کنید، روی سیستم‌تان نصب کنید و تا آنجایی که می‌توانید مفاهیم پایه آن را که در سایت‌ اصلی خود متلب یعنی mathworks و کتاب‌های پایه‌ای چون یادگیری متلب برای خنگ‌ها وجود دارد یاد بگیرید.

من اینجا کد را قرار می‌دهم تا دوستانی که با متلب آشنا هستند بتوانند سریع دست به کار بشوند، اگر آشنا نیستید این آموزش را ادامه بدهید.  کد شبیه سازی شبکه‌های حسگر بی سیم در متلب

بعد از اینکه متلب را باز کردید باید یک تابع باز کنید، برای باز کردن تابع در متلب به صورت زیر عمل کنید

از تب home قسمت new  را انتخاب کرده و از آنجا function را انتخاب کنید. حالا می‌توانید آن کد را مستقیما در این قسمت وارد کنید، اگر می‌خوانید بدانید چی به چیه د زیر آمده است.

همان طور که در این ویدیو گفته شده، شما باید توابع را بین دو کلمه function  و end قرار بدهید. پس ابتدا باید کد زیر را وارد کنید

function

end

در جلوی function بایستی اسم تابع تان را بنوسید که در اینجا شبکه‌های حسگر بی‌سیم است. شما باید در کنار آن یک پرانتز باز و بسته قرار بدهید.

function WirelessSensorNetworks()

end

حالا باید تعداد گره‌ها، و مختصات شبکه (طول و عرض شبکه) را به این تابع اضافه کنیم. این‌های متغیرهای جهانی هستند. برای اضافه کردن کامنت یا توضیحات برای خودتان از %  استفاده می‌کنیم. اگر برنامه نویسی کار نکردید به جزئیات چگونگی نوشتن یعنی :، ویرگول، و نقطه ویرگول توجه کنید.

function wirelesssensornetworks()

global nodes %numbers of nodes

global networkx %width

global networky %height

end

خوب حالا متغیرهای جهانی را تعریف کردیم، حالا نوبت مقدار دهی به این متغیرها است. ما ۱۵۰تا گره داریم،  و محیط یک مربع ۱۵۰ در ۱۵۰ است. پس

function wirelesssensornetworks()

global nodes %numbers of nodes

global networkx %width

global networky %height

nodes:150;

networky:100;

networkx=networky; %environment 100*100

end

خوب حالا نیاز است تا انرژی اولیه گره‌ها را بیان کنیم. برای این کار از یک متغیر عادی استفاده می‌کنیم. همین طور نیاز به مشخص کردن محل سینک داریم پس:

function wirelesssensornetworks()

global nodes %numbers of nodes

global networkx %width

global networky %height

nodes:150;

networky:100;

networkx=networky; %environment 100*100;

sink.xd:networkx/2;

sink.yd:networky/2;

init_energy:0.5j; %initial energy of nodes

end

اکنون زمان آن فرا رسیده که شبکه را بسازیم، برای ساخت شبکه از تابعی به نام builtnetwork استفاده می‌کنیم. این تابع یک خروجی و یک سری ورودی دارد. خروجی یعنی چیزی که پس از اجرای تابع به دست می‌آید. ورودی هم چیزهایی که خودمان بش می‌دهیم. ورودی در اینجا طول و عرض شبکه، تعداد گره‌ها، انرژی  اولیه، و مختصات سینک است.

function wirelesssensornetworks()

global nodes %numbers of nodes

global networkx %width

global networky %height

nodes:150;

networky:100;

networkx=networky; %environment 100*100;

sink.xd:networkx/2;

sink.yd:networky/2;

init_energy:0.5j; %initial energy of nodes

[S]=bultnetwork(networkx,networky,nodes,init_energy,sink);

end

حالا باید تعریف کنیم این تابع چطوری کار می‌کنه پس

function wirelesssensornetworks()

global nodes %numbers of nodes

global networkx %width

global networky %height

nodes:150;

networky:100;

networkx=networky; %environment 100*100;

sink.xd:networkx/2;

sink.yd:networky/2;

init_energy:0.5j; %initial energy of nodes

[S]=bultnetwork(networkx,networky,nodes,init_energy,sink);

end

function  [S]=bultnetwork(networkx,networky,nodes,init_energy,sink)

end

حالا نوبت ساخت شبکه با این تابع است، من برای آسانتر شدن کار در اینجا تابع بالایی را نمی‌نویسم: برای دیدن شکل از تابع figure  استفاده می‌کنیم. تابع plot برای رسم شکل استفاده می‌شود.

function [S]= bultnetwork(networkx,networky,nodes,init_energy,sink)
figure(1)
hold off
plot(sink.xd,sink.yd,’k+’);%draw sink in envronment it with black plus +
hold on

for i=1:1:nodes
S(i).E=init_energy; %inital energy of node i
S(i).xd=rand*networkx; % mokhtasat of node i
S(i).yd=rand*networky;
plot (S(i).xd,S(i).yd,’o’);

end

end

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

 

دیدگاه‌تان را بنویسید: