資源簡介
基于位置指紋算法實現定位 MATLAB完整程序 包含NN KNN WKNN
BAYES 四種定位算法

代碼片段和文件信息
function?loc_point=FingerLocFun(APxAPyFPxFPyfp_powerap_powerap_gainfp_gainp_xp_ynoiseidk);
%id:算法ID號,1、NN??2、KNN?3、WKNN?4、Bayes?5、Kbayes?6、Dbayes
%loc_point=[0?0];
[ap_rap_num]=size(APx);
[fp_rfp_num]=size(FPx);
rp_power=zeros(1ap_num);
for?j=1:1:ap_num?
????dis=sqrt((p_x-APx(j))*(p_x-APx(j))+(p_y-APy(j))*(p_y-APy(j)));
????loss_db=32.44+20*log10(2400)+20*log10(dis/1000);?
????rp_power(1j)=ap_power+ap_gain+fp_gain-loss_db-noise;
end
dis_power=zeros(1fp_num);
for?i=1:1:fp_num
????d_sum=0;
????for?j=1:1:ap_num
????????d_sum=(fp_power(ij)-rp_power(1j))*(fp_power(ij)-rp_power(1j))+d_sum;
????end
????dis_power(1i)=sqrt(d_sum);
end
temp_fpx=FPx;
temp_fpy=FPy;
temp_dispow=dis_power;
temp_power=fp_power;
temp=0;
for?i=1:1:fp_num-1????????????????????????????????????%冒泡法排序
????for?j=1:1:fp_num-i
????????if(temp_dispow(j)?>?temp_dispow(j?+?1))
????????????
????????????temp?=?temp_dispow(j);
????????????temp_dispow(j)?=?temp_dispow(j+1);
????????????temp_dispow(j+1)?=?temp;
????????????
????????????for?n=1:1:ap_num????????????????????????????%對接收信號強度值該行的所有值進行交換
????????????????temp?=?temp_power(jn);
????????????????temp_power(jn)?=?temp_power(j+1n);
????????????????temp_power(j+1n)?=?temp;
????????????end
????????????
????????????temp?=?temp_fpx(j);
????????????temp_fpx(j)?=?temp_fpx(j+1);
????????????temp_fpx(j+1)?=?temp;
????????????temp?=?temp_fpy(j);
????????????temp_fpy(j)?=?temp_fpy(j+1);
????????????temp_fpy(j+1)?=?temp;
????????end
????end
end
x_sum?=?0;
y_sum?=?0;
u=0;
sigma=0.3;%%%%%%%%%%%%%%%%%%%%%%%;
switch?(id)
????case?1????????????????????????????????????????????%NN
????????x_sum=temp_fpx(1);
????????y_sum=temp_fpy(1);
????case?2????????????????????????????????????????????%KNN
????????for?i=1:1:k
????????????x_sum=x_sum+temp_fpx(i);
????????????y_sum=y_sum+temp_fpy(i);
????????end
????????x_sum=x_sum*1.0/k;
????????y_sum=y_sum*1.0/k;
????case?3????????????????????????????????????????????%WKNN
????????w_sum=0.0;
????????for?i=1:1:k
????????????x_sum=x_sum+temp_fpx(i)*(1.0/(temp_dispow(i)?+?0.0001));
????????????y_sum=y_sum+temp_fpy(i)*(1.0/(temp_dispow(i)?+?0.0001));
????????????w_sum=w_sum+1.0/(temp_dispow(i)?+?0.0001);
????????end
????????x_sum=x_sum*1.0/w_sum;
????????y_sum=y_sum*1.0/w_sum;
????case?4
????????p_list?=?zeros(1fp_num);
????????p_APj_FP?=?0;
????????for?i?=?1:1:fp_num
????????????%獲取P(APj|指紋i)的后驗概率值
????????????p_APj_FPi?=?1.0;
????????????for?j?=?1:1:ap_num
????????????????Skj?=?fp_power(ij);
????????????????U?=?Skj?+?u;
????????????????p_APj_FPi?=?p_APj_FPi*1.0?/?sqrt(2?*?3.1415926)?/?sigma?*?exp(-0.5?*?(rp_power(1j)?-?U)?*?(rp_power(1j)?-?U)?/?(sigma?*?sigma));
????????????end
????????????p_list(1i)?=?p_APj_FPi;
????????????p_APj_FP?=p_APj_FP+p_APj_FPi;
????????end
????????p_list%%%%%%%%%%%%%%%
????????for?i?=1:1:fp_num
????????????x_sum=x_sum+FPx(1i)*p_list(1i)/p_APj_FP;
????????????y_sum=y_s
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-07?00:16??基于MATLAB的指紋定位算法\
?????文件????????4345??2018-09-06?23:27??基于MATLAB的指紋定位算法\指紋-定位算法MATLAB代碼.rar
?????目錄???????????0??2018-09-07?00:20??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\
?????文件????????5042??2014-05-03?17:37??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\FingerLocFun.m
?????文件?????????482??2014-05-03?16:39??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\ReceivePowerFun.m
?????文件????????5404??2014-12-03?16:04??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\main.asv
?????文件????????5404??2014-12-03?16:04??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\main.m
?????文件???????46571??2018-09-02?20:33??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\捕獲1.JPG
?????文件???????22712??2018-09-03?11:00??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\捕獲2.JPG
?????文件???????10240??2018-09-07?00:19??基于MATLAB的指紋定位算法\指紋定位算法仿真代碼\新建?DOC?文檔.doc
- 上一篇:模擬退火算法解決vrptw
- 下一篇:基于matlab的雙向A*算法
評論
共有 條評論