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)
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
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.
CRLB.JPG
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
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.

Sign in to comment.

Answers (0)

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!