亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? location_gui.m

?? 無線傳感器網絡路由算法
?? M
字號:
function varargout = location_gui(varargin)%location_gui函數名
% LOCATION_GUI M-file for location_gui.fig
%      LOCATION_GUI, by itself, creates a new LOCATION_GUI or raises the existing
%      singleton*.
%
%      H = LOCATION_GUI returns the handle to a new LOCATION_GUI or the handle to
%      the existing singleton*.
%
%      LOCATION_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in LOCATION_GUI.M with the given input arguments.
%
%      LOCATION_GUI('Property','Value',...) creates a new LOCATION_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before location_gui_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to location_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help location_gui

% Last Modified by GUIDE v2.5 12-Jan-2006 11:18:01

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @location_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @location_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before location_gui is made visible.
function location_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to location_gui (see VARARGIN)

% Choose default command line output for location_gui
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes location_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);GUI為圖形界面設計


% --- Outputs from this function are returned to the command line.
function varargout = location_gui_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes during object creation, after setting all properties.
function length_edit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to length_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function length_edit_Callback(hObject, eventdata, handles)
% hObject    handle to length_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of length_edit as text
%        str2double(get(hObject,'String')) returns contents of length_edit as a double


% --- Executes during object creation, after setting all properties.
function width_edit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to width_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function width_edit_Callback(hObject, eventdata, handles)
% hObject    handle to width_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of width_edit as text
%        str2double(get(hObject,'String')) returns contents of width_edit as a double


% --- Executes on button press in ok.
function ok_Callback(hObject, eventdata, handles)
% hObject    handle to ok (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

%%按照場地均勻安排錨節點
%考慮測距誤差為正負10%
%初始化節點及存放定位信息矩陣
node_num=200;%一般節點數量
%錨節點數量大約為一般節點數量的10%,依場地情況而定
length=100;%場地長度
width=100;%場地寬度
rangemax=15;%節點間最大通信距離

%從GUI獲得數據
node_num=str2double(get(handles.node_edit,'String'));
length=str2double(get(handles.length_edit,'String'));
width=str2double(get(handles.width_edit,'String'));

[node_x,node_y]=creatnode(node_num,length,width);%生成普通節點

%開始生成錨節點位置,20個錨節點均勻分布
anchor_length=sqrt(length*width*10/100);
anchor_no=1;
for temp_width=1:(1+width/(anchor_length-7))
    for temp_length=1:(1+length/anchor_length)
        anchor_x(anchor_no)=anchor_length*(temp_length-1);
        anchor_y(anchor_no)=(anchor_length-7)*(temp_width-1);
        anchor_no=anchor_no+1;
    end
end
anchor_num=anchor_no-1;%最后得到的錨節點數量

% 生成存放定位信息的矩陣
%縱坐標為到第一個錨節點的跳數,到第一個錨節點的距離和,到第二個錨節點的跳數……
%橫坐標為所需定位節點的序號,這個序號與最初生成的node序號是一致的
locateinf=ones(2*anchor_num,node_num)*inf;

ok='初始化結束'

%% 察看初始節點狀況
plot(anchor_x,anchor_y,'*',node_x,node_y,'*');

%% 程序開始
%對圖進行廣度先遍歷
abcanchor=0;
abcnode=0;
for anchor_no=1:anchor_num
    %初始化隊列
    abcanchor=abcanchor+1
    queue=zeros(1,node_num);
    front=1;
    rear=1;
    %
	for node_no=1:node_num
        %abcnode=abcnode+1
        distance=dist(anchor_x(anchor_no),anchor_y(anchor_no),node_x(node_no),node_y(node_no));
        if distance<=rangemax
            locateinf(2*(anchor_no-1)+1,node_no)=1; %跳數
            locateinf(2*anchor_no,node_no)=distance; %距離和
            %將該點加入隊列
            queue(1,rear)=node_no;
            rear=rear+1;
            %
        end
        while(front<rear)
            %從隊列中取出元素,該點為known
            known=queue(1,front);
            front=front+1;
            %
            for node_no=1:node_num
                distance=dist(node_x(known),node_y(known),node_x(node_no),node_y(node_no));
                if distance<=rangemax
                    if locateinf(2*(anchor_no-1)+1,node_no)>(locateinf(2*(anchor_no-1)+1,known)+1) %在此可考慮增加采用距離和較短的算法
                        locateinf(2*(anchor_no-1)+1,node_no)=(locateinf(2*(anchor_no-1)+1,known)+1);
                        locateinf(2*anchor_no,node_no)=locateinf(2*anchor_no,known)+distance;
                        %將該點加入隊列
                        queue(1,rear)=node_no;
                        rear=rear+1;
                        %
                    end
                end
            end
        end
    end
end 

ok='完成圖的廣度先遍歷'

%% 生成錨節點優先選取矩陣anchorchosen,將距離遠的錨節點序號放在后面,即從好到壞排列
for node_no=1:node_num
    node_no
    for anchor_no=1:anchor_num
        %構造temp矩陣
        temp(anchor_no,1)=anchor_no;
        temp(anchor_no,2)=locateinf((2*anchor_no),node_no);
    end
    %對temp矩陣進行排序處理
    for ti=1:anchor_num-1
        min=ti;
        for tj=ti+1:anchor_num
            if temp(tj,2)<temp(min,2)
                min=tj;
            end
        end
        if ti~=min
            tempintemp1=temp(ti,1);
            tempintemp2=temp(ti,2);
            temp(ti,1)=temp(min,1);
            temp(ti,2)=temp(min,2);
            temp(min,1)=tempintemp1;
            temp(min,2)=tempintemp2;
        end
    end
    for anchor_no=1:anchor_num
        anchorchosen(anchor_no,node_no)=temp(anchor_no,1);
    end
end

ok='生成錨節點優先選取矩陣'

%% 改進算法,選取跳數少的錨節點進行定位,節點坐標存為(locate_near_x,locate_near_y)
locate_near_x=zeros(1,node_num);
locate_near_y=zeros(1,node_num);
for node_no=1:node_num
    tempflag=0;
    node_no
    for chosen1=1:(anchor_num-2)
        for chosen2=(chosen1+1):(anchor_num-1)
            for chosen3=(chosen2+1):anchor_num
               %[x,y]=barycenter(anchor_x(anchorchosen(chosen1,node_no)),anchor_y(anchorchosen(chosen1,node_no)),locateinf(2*anchorchosen(chosen1,node_no),node_no),anchor_x(anchorchosen(chosen2,node_no)),anchor_y(anchorchosen(chosen2,node_no)),locateinf(2*anchorchosen(chosen2,node_no),node_no),anchor_x(anchorchosen(chosen3,node_no)),anchor_y(anchorchosen(chosen3,node_no)),locateinf(2*anchorchosen(chosen3,node_no),node_no));
                [x,y]=barycenter(anchor_x(anchorchosen(chosen1,node_no)),anchor_y(anchorchosen(chosen1,node_no)),locateinf(2*anchorchosen(chosen1,node_no),node_no),anchor_x(anchorchosen(chosen2,node_no)),anchor_y(anchorchosen(chosen2,node_no)),locateinf(2*anchorchosen(chosen2,node_no),node_no),anchor_x(anchorchosen(chosen3,node_no)),anchor_y(anchorchosen(chosen3,node_no)),locateinf(2*anchorchosen(chosen3,node_no),node_no));
                if((isreal(x)==1)&&(isreal(y)==1)) 
                    locate_near_x(node_no)=x;
                    locate_near_y(node_no)=y;
                    tempflag=1;
                end
                if(tempflag==1) break; end
            end
            if(tempflag==1) break; end
        end
        if(tempflag==1) break; end
    end
end

ok='定位完成'

%% 計算誤差
% 距離差
difference_x=abs(locate_near_x-node_x);
difference_y=abs(locate_near_y-node_y);

%% 顯示距離差
plot(difference_x,difference_y,'+');

% 得出距離差,放在矩陣difference中
for node_no=1:node_num
    difference(node_no)=sqrt((difference_x(node_no))^2+(difference_y(node_no))^2);
end

%% 得到距離差大于值gatevalue的點,將節點序號存于badpoint中,badpoint_no為badpoint的數量
gatevalue=rangemax;
badpoint_no=1;
for node_no=1:node_num
    if difference(node_no)>gatevalue
        badpoint(badpoint_no)=node_no;
        badpoint_no=badpoint_no+1;
    end
end
badpoint_no=badpoint_no-1;

range_error=(mean(difference)/rangemax)*100


% 繪制node節點位置和計算出的位置,并用線段連接

plot(anchor_x,anchor_y,'*',node_x,node_y,'*',locate_near_x,locate_near_y,'+');
hold on;
for node_no=1:node_num
    line([node_x(node_no),locate_near_x(node_no)],[node_y(node_no),locate_near_y(node_no)]);
end
s=['平均定位誤差:',num2str(range_error),'%'];
title(s);
hold off;
%plot(anchor_x,anchor_y,'*',node_x,node_y,'*')
%hold on;
%plot(locate_near_x,locate_near_y,'.','MarkerSize',15,'Color','r');
%for node_no=1:node_num
%    line([node_x(node_no),locate_near_x(node_no)],[node_y(node_no),locate_near_y(node_no)]);
%end
%hold off;

%門限值為最大通信距離,顯示距離差大于門限值的節點個數
badpoint_no

%計算連通度,并顯示結果
count=0;
for node_no=1:node_num
    if(isnan(difference(node_no))~=1)
        count=count+1;
    end
end
connectivity=count/node_num;
connectivity

ok='全部完成'
% --- Executes during object creation, after setting all properties.
function node_edit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to node_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function node_edit_Callback(hObject, eventdata, handles)
% hObject    handle to node_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of node_edit as text
%        str2double(get(hObject,'String')) returns contents of node_edit as a double


% --- Executes during object creation, after setting all properties.
function anchor_edit_CreateFcn(hObject, eventdata, handles)
% hObject    handle to anchor_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end



function anchor_edit_Callback(hObject, eventdata, handles)
% hObject    handle to anchor_edit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of anchor_edit as text
%        str2double(get(hObject,'String')) returns contents of anchor_edit as a double


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美乱综合| 国产精品的网站| 成人免费视频国产在线观看| 亚洲专区一二三| 91网站最新地址| 青青青爽久久午夜综合久久午夜 | 欧美精品一级二级三级| 99re热这里只有精品视频| 奇米影视一区二区三区小说| 亚洲大片在线观看| 一区二区三区免费在线观看| ...中文天堂在线一区| 久久久精品国产免费观看同学| 91麻豆精品久久久久蜜臀| 久久久久久久网| 精品粉嫩超白一线天av| 欧美一级理论片| 日韩精品一区在线观看| 精品1区2区在线观看| 精品久久一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 色悠久久久久综合欧美99| 99re这里只有精品视频首页| 国产一本一道久久香蕉| 高清在线不卡av| 97se亚洲国产综合自在线观| av一本久道久久综合久久鬼色| www..com久久爱| 成人动漫视频在线| 日本韩国精品在线| 777久久久精品| 精品国产乱码久久久久久夜甘婷婷| 久久婷婷国产综合精品青草| 国产婷婷色一区二区三区 | 日本美女一区二区三区视频| 亚洲欧美激情在线| 亚洲精品日韩一| 精油按摩中文字幕久久| 91免费国产在线观看| 欧美变态口味重另类| 亚洲一区二区视频在线观看| 国产成人在线网站| 综合在线观看色| 精品一区二区三区免费毛片爱| 99久久国产综合精品色伊| 日韩欧美成人一区| 亚洲一二三区不卡| 91在线视频免费91| 久久综合资源网| 蜜臀久久99精品久久久久久9| 色中色一区二区| 国产亚洲一区二区三区四区| 美女视频黄 久久| 777亚洲妇女| 亚洲影院在线观看| 色香蕉久久蜜桃| 国产精品欧美经典| 国产精品一区二区三区99| 日韩亚洲欧美综合| 首页亚洲欧美制服丝腿| 欧美在线999| 亚洲精品视频在线看| 暴力调教一区二区三区| 中文av一区二区| 国产v综合v亚洲欧| 久久精品一区二区三区av| 日本va欧美va精品| 欧美一区二视频| 蜜桃免费网站一区二区三区| 欧美裸体bbwbbwbbw| 亚洲在线视频网站| 精品视频在线视频| 亚洲成人资源在线| 欧美一区二区在线观看| 亚洲bt欧美bt精品| 制服丝袜日韩国产| 另类小说欧美激情| 久久免费国产精品| 成人爽a毛片一区二区免费| 欧美激情一区二区三区全黄| 成人高清视频在线| 亚洲欧洲美洲综合色网| 91成人在线免费观看| 亚洲国产毛片aaaaa无费看| 欧美日韩亚洲不卡| 日韩精品一卡二卡三卡四卡无卡| 在线综合视频播放| 国精产品一区一区三区mba视频| 久久久久久99久久久精品网站| 国产91精品免费| 一区二区三区四区不卡在线| 欧美精品 国产精品| 国内精品第一页| √…a在线天堂一区| 宅男噜噜噜66一区二区66| 激情五月激情综合网| 日韩美女啊v在线免费观看| 欧美视频一区在线| 国产一区二区h| 一区二区三区日韩在线观看| 91精品国产91久久久久久一区二区| 久久 天天综合| 亚洲人成7777| 日韩三级中文字幕| 92国产精品观看| 美国十次综合导航| 一区二区三区四区五区视频在线观看| 91麻豆精品国产91久久久更新时间| 韩国欧美一区二区| 亚洲成人免费视频| 欧美极品美女视频| 欧美一级生活片| 一本色道久久综合精品竹菊| 久久超碰97人人做人人爱| 亚洲裸体xxx| 久久综合久久鬼色| 欧美男女性生活在线直播观看 | 久久精品亚洲一区二区三区浴池| 日本高清不卡视频| 国产一区亚洲一区| 天天射综合影视| ...xxx性欧美| 国产女同性恋一区二区| 6080国产精品一区二区| 色天天综合久久久久综合片| 国产风韵犹存在线视精品| 日韩不卡免费视频| 夜夜夜精品看看| 国产精品不卡一区二区三区| 国产午夜精品福利| 久久综合久久久久88| 欧美一区二区福利视频| 欧美日韩视频在线第一区 | 日本va欧美va精品发布| 亚洲一区二区三区视频在线播放| 国产婷婷一区二区| 精品奇米国产一区二区三区| 欧美美女视频在线观看| 91福利社在线观看| 99久久精品国产网站| 成人一区二区在线观看| 国产成人在线网站| 国产一区二区91| 精品一区二区免费| 久久国产精品72免费观看| 日韩成人免费在线| 日韩av电影免费观看高清完整版 | 麻豆成人免费电影| 午夜精品福利久久久| 亚洲国产成人tv| 美女一区二区三区| 亚洲欧美日韩国产综合在线| 国产精品嫩草99a| 国产精品网站导航| 亚洲人成精品久久久久久 | 日本久久一区二区三区| av在线不卡电影| 91老师片黄在线观看| 欧美性猛交xxxxxx富婆| 欧美日韩免费视频| 91精品国产综合久久久蜜臀粉嫩| 欧美巨大另类极品videosbest| 欧美日本在线一区| 日韩欧美激情一区| 欧美国产日韩一二三区| 亚洲色图欧洲色图| 亚洲国产精品久久不卡毛片| 男女激情视频一区| 国产suv精品一区二区883| 成人免费视频视频| 欧美亚洲国产怡红院影院| 制服丝袜一区二区三区| 久久综合久久久久88| 欧美成人艳星乳罩| 久久综合九色综合97婷婷| 国产精品日日摸夜夜摸av| 亚洲精品免费在线观看| 日本午夜一本久久久综合| 黄页网站大全一区二区| 91麻豆国产福利精品| 日韩一区二区在线观看视频| 国产视频一区在线观看| 亚洲精品国产高清久久伦理二区| 日韩av中文字幕一区二区| 国产成人av自拍| 欧美日韩国产区一| 国产精品国产a级| 亚洲成人午夜影院| 国产精品77777竹菊影视小说| 在线欧美日韩国产| 国产日本欧洲亚洲| 日本va欧美va瓶| 日本道免费精品一区二区三区| 欧美成人在线直播| 亚洲精品国产成人久久av盗摄 | 99国产精品久久久久| 日韩一区二区三区精品视频| 亚洲日本在线天堂| 国产成人福利片| 欧美一级高清大全免费观看|