شبیه‌سازی شبکه‌های بی سیم و کامپیوتری
شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا
  • شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا

مشخصات بلاگ
شبیه‌سازی شبکه‌های بی سیم و کامپیوتری

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

شماره تماس: 09147082079-0098
آیدی تلگرامی:https://t.me/MuosSA_NbO
جی میل :mo30no@gmail.com

تمامی کدهای این وبلاگ در حال حاضر به زبان متلب می باشد

«آنچه می‌دانیم ناچیز و آنچه نمی‌دانیم عظیم و وسیع است»
$$پیر سیمون لاپلاس$$

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

[uniqueDestInd, gridDist1,selctedInd,selctedVal]=getNearstDest1DByCondition(destPos, sourcPos,isplot,isFig,Condition)

کد این تابع:(the matlab code of this function)

i explained this function already but i added a condition, So that,  source can get nearest with only if only  it be Smaller or larger than the  source..

%%%%%%%%%%%%%%%%%%%%%%%%%%-----------software details-----------%%%%%%%%%%%%%%%%%%%%%%

%devloped in Iran(ardebil)                                       %
%Copyright (C) 2017(1396) by moussa hasanzadeh as the head devloper %%
%All rights reserved.                                             % 
%programed in mathlab 2016                                 
%gmail:mo30no@gmail.com
%phone 09147082079


%%caaling script
% find nearst dest point(source vector) from source point
%   sourcPos.x=randi([-100,100],1,100);
%   destPos.x=randi([-100,100],1,30);
%   [unDestInd, gridDist,selctedDest,selctedDict]=getNearstDest1D(destPos, sourcPos,1,1,1);
% 
%  
%   sourcPos.y=randi([-100,100],1,100);
%   destPos.y=randi([-100,100],1,30);
%   [unDestInd, gridDist,selctedDest,selctedDict]=getNearstDest1D(destPos, sourcPos,1,1,0);
%  gridDist=gridDist.*(destPos.x' >sourcPos.x);
% if Condition==1  % only select destination larger than source  else % only select destination lower  than source


function  [uniqueDestInd, gridDist1,selctedInd,selctedVal]=getNearstDest1DByCondition(destPos, sourcPos,isplot,isFig,Condition)
gridDist=pdist1D(sourcPos,destPos  );%distance between all nodes with grid center points
gridDist1=gridDist;
if nargin==5
if Condition ==1 % only select destination larger than source
gridDist=gridDist.*(sourcPos.x' <destPos.x  ); 
[v,Ind]=max(destPos.x);
gridDist(gridDist==0)=max(gridDist(:))+10;
[selctedVal,selctedInd]=min(gridDist,[],2);% here we used an simple algorithm to determine each node in network is belong to which cell in grid network
selctedInd(Ind)=Ind;
selctedVal(Ind)=v ;    
else% only select destination lower  than source
 gridDist=gridDist.*(sourcPos.x' >destPos.x  ); 
[v,Ind]=min(destPos.x);
gridDist(gridDist==0)=max(gridDist(:))+10;
[selctedVal,selctedInd]=min(gridDist,[],2);% here we used an simple algorithm to determine each node in network is belong to which cell in grid network
selctedInd(Ind)=Ind;
selctedVal(Ind)=v ;     
end
else
      
end

uniqueDestInd=  unique(selctedInd);% if we unique the number of centers that are selected  by normal nodes, based on minimum distance, in reality we get the number coverage area
if nargin >=3
    if isplot==1
        if isFig
            figure;
        end
        
        plot( sourcPos.x, sourcPos.x*0+.5,'ro') ;hold on
        r= rand(1,length(sourcPos.x))  ;
        plot([sourcPos.x;destPos.x(selctedInd')] ,[sourcPos.x*0+r;sourcPos.x*0+r  ],'k-');hold on;
        
        if Condition
              
              plot([ destPos.x(selctedInd')] ,[ sourcPos.x*0+r  ],'>');hold on;
        else
              plot([ destPos.x(selctedInd')] ,[ sourcPos.x*0+r  ],'<');hold on;
              
        end

    else
    end
end
end

 
% gridDist=pdist1D(sourcPos  );%distance between all nodes with destnation nodes
% gridDist=pdist1D(sourcPos,destPos  );%distance between all nodes within a vector
function gridDist=pdist1D(s, d   )


try
      xTs=s.x' * ones(1,length(d.x) );
      
      xTd=ones(1,length(s.x) )' * d.x  ;
      
      gridDist=sqrt((xTs - xTd ).^2 );
catch
      
      yTs=s.y' * ones(1,length(d.y) );
      
      yTd=ones(1,length(s.y) )' * d.y  ;
      
      gridDist=sqrt((yTs - yTd ).^2 );
end

end



 

خروجی این تابع( An output example of this function)

 

 

 

 

 

 

موافقین ۰ مخالفین ۰ ۹۹/۰۸/۱۵
موسی حسن زاده

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی