How can I get MATLAB codes for computing the Cramer-Rao Lower Bound for Received Signal Amplitude Estimation and Phase Difference Estimation
16 views (last 30 days)
Show older comments
Please I need Matlab codes that can let me compute Cramer-Rao Lower Bound for Received Signal Amplitude Estimation and Phase Difference Estimation in my localisation project. I am totally lost here. Thank you
3 Comments
imsoon xhian
on 25 Jan 2019
CRLB of RSS model explained in paper: " Relative Location Estimation in Wireless Sensor Networks " in section appendix C. CRB for Location Estimation
and CRLB with standard deviation changed i.e.

mfile is:
% this code simulates the CRLB of RSS measurements
clc;
clear all;
%************************************************************* PARAMETERS *********************************************************
d0=1;% reference distance (indoor scenario) (meter)
PLE=4; % path loss exponent
target_x=11.0; %true location (meter)
target_y=10.0;;%true location (meter)
s_x=[ 5 5 5 8 8 12 12 15 15 15];% x coordinate of anchor sensors (meter)
s_y=[ 5 10 15 0 20 0 20 5 10 15];% y coordinate of anchor sensors (meter)
L0=[40];% reference path loss (dB)
p0=[-10];% reference received power (dBm)
%******************************************************************* standard deviation range [0, 1, ..., 10] *****************************************************************
sigma=[0.0001:1:10.1]; % noise standard deviation (dB)
for w=1:length(sigma)
%%%%%%%%%%%%%%%%%%%%%%%%%%% CRLB BEGIN
for k3=1:length(s_x)
drivative_mu_x1(k3)=(-10*PLE/log(10)) * ( ([ target_x ]-s_x(k3)) )/ ...
( square(norm([target_x; target_y ]-[s_x(k3);s_y(k3)],2) ) );
end
drivative_mu_xx1=drivative_mu_x1;
for k2=1:length(s_x)
drivative_mu_y2(k2)=(-10*PLE/log(10))*( ([ target_y ]-s_y(k2)) )...
/( square(norm([target_x; target_y ]-[s_x(k2);s_y(k2)],2)) );
end
drivative_mu_yy2=drivative_mu_y2;
gama=[ eye(length(s_x))];
c1=[square(sigma(w))];
sigma1=c1*gama;
inv_sig=inv(sigma1);
J1(1,1)=drivative_mu_xx1''*inv_sig*drivative_mu_xx1';
J1(2,2)=drivative_mu_yy2''*inv_sig*drivative_mu_yy2';
J1(1,2)=drivative_mu_xx1''*inv_sig*drivative_mu_yy2';
J1(2,1)=J1(1,2);
J1_inv=inv(J1);
CRLB(w)=sqrt(J1_inv(1,1)+J1_inv(2,2));
%%%%%%%%%%%%%%%%%%%%%%%%%%% CRLB END
end
%*******************************************************************plot *****************************************************************
pic1=plot(sigma,CRLB,'r -o','LineWidth',3);
grid on;
title('Figure1 ')
xlabel('Standard deviation (dB)');
ylabel('RMSE (meter)');
leg1 = legend('CRLB');
Sugumar S J
on 7 Jul 2021
Im getting a ouput with the variation in CRLB in increasing and decreasing. Can u suggest how to get the ouput as shown in the figure.
Answers (0)
See Also
Categories
Find more on Get Started with System Identification Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!