• 大小: 55KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: MATLAB  WKNN  KNN  BAYES  

资源简介

基于位置指纹算法实现定位 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

评论

共有 条评论