⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crlb.m

📁 移动定位基本方法和基本算法要用到的的公共函数仿真程序
💻 M
字号:
function X = CRLB( BSN, MSP, R )
%   Cramer-Rao Lower Bound 是无偏估计的理论下界
%   CRML参数说明:
%       BSN: 基站的个数;
%       MS:  移动台的位置,其中MSx/MSy均在[0,1];
%       R:   小区半径。
%
%       X:   CRLB是一矩阵的形式,主对角线上第一个元素表示横坐标的CRLB;
%            第二个元素表示定位精度的CRLB。
%   See also CRLB.m

%   李金伦,西南交通大学
%       10 December, 2004, 第一版

%   参数检查:
if  nargout>1,
    error('Too many output arguments.');
end
if nargin<2 | nargin>3,
    error('Wrong number of input arguments.');
end
% if BSN <= 3,
%     error('The number of BSs must be larger than 3 for this program.');
% end
flag = size(MSP);
if flag(1)~=1 | flag(2)~=2,
    error('Wrong position vector!');
end

%   初始参数设置:
%     BSN = 4;
%     MS  = [0.5, 0.8];
%     R   = 5000;
    BS  = [0, sqrt(3)*R, 0.5*sqrt(3)*R, -0.5*sqrt(3)*R, -sqrt(3)*R, -0.5*sqrt(3)*R, 0.5*sqrt(3)*R;
           0, 0,         1.5*R,         1.5*R,          0,          -1.5*R,         1.5*R];
    c   = 3*10^8;
    Dev = 900/(c*c);
    Q   = 0.5*Dev*(eye(BSN-1) + ones(BSN-1));
    %Q = Dev*eye(BSN-1);
%   算法流程:
    MS = R*MSP;
    
    BSR_1  = sqrt(MS(1)*MS(1) + MS(2)*MS(2)); % R(1)
    
    % R(2) --- R(BSN)
    for i = 1: BSN-1,
        BSR(i) = sqrt((BS(1, i+1) - MS(1))*(BS(1, i+1) - MS(1)) + (BS(2, i+1) - MS(2))*(BS(2, i+1) - MS(2)));
    end
%    % d(2) --- d(BSN)
%     for i = 1: BSN-1,
%         d(i) = (BSR(i) - BSR_1)/c;
%     end
%     Sigma = cov(d)
%     Q = 0.5*Sigma*(eye(BSN-1) + ones(BSN-1));
    % Ga0
    for i = 1:BSN -1,
        Ga(i,1) = -BS(1, i+1);
        Ga(i,2) = -BS(2, i+1);
        Ga(i,3) = -BSR(i);
    end
    % Ga'
    mGa = [1, 0; 0, 1; 1, 1];
    % B
    B = zeros(BSN-1, BSN-1);
    for i = 1: BSN-1,
        B(i, i) = BSR(i);
    end
    % B'
    mB = [MS(1), 0, 0; 0, MS(2), 0; 0, 0, BSR_1];
    % B''
    mmB = [MS(1), 0; 0, MS(2);];
    
%   输出
    Crlb = c*c*inv(mmB*transpose(mGa)*inv(mB)*transpose(Ga)*inv(B)*inv(Q)*inv(B)*Ga*inv(mB)*mGa*mmB);
    
    if nargout == 1, 
        X = Crlb;
    elseif nargout == 0,
        disp( Crlb );
    end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -