www.gusucode.com > 瑞利信道下噪声能量的估计源码程序 > 瑞利信道下噪声能量的估计源码程序/MSP_estimate_version1/MSP/MSP_Rayleigh_distribution.m

    % MSP-Rayleigh based on Kullback-Leibler divergence
% 
% Tomasz Pieciak
% AGH university of Science and Technology, Krakow, Poland
% pieciak@agh.edu.pl, http://home.agh.edu.pl/pieciak/
%
% ARGUMENTS
%   sigma - sigma parameter
%   m - data (order statitics according to eq. (5))
%   k - order of the MSP estimator, eq. (16)
%   delta - parameter to avoid impermissible numerical calculations
%   weights - unused (to be used in future)
%
% FUNCTION RETURNS
%   value - value of the MSP-Rayleigh estimator at sigma
%   grad - gradient of the MSP-Rayleigh estimator at sigma
%
% USAGE
%   FUNCTION_HANDLE_MSP_RAYLEIGH_KL = @(sigma_, m_, k_, delta_, weights_)MSP_Rayleigh_distribution(sigma_, m_, k_, delta_, weights_);
%   ...
%   [value, grad] = feval(FUNCTION, sigma_old, m, k, delta, weights);  % Optimization_Rayleigh_GD.m file

function [value, grad] = MSP_Rayleigh_distribution(sigma, m, k, delta, weights)

n = length(m);
alpha = exp( -(m.^2) ./ (2*sigma^2) );  % alpha_i defined in paragraph 2.1
beta = (n+1)/k; % beta parameter defined in paragraph 2.3

% Value of the Q_MPS function at 'sigma'
value = -( (1/(n-k+2)) .* (log(1 - alpha(k) + delta)   +   sum(log(alpha(1:n-k)  -  alpha(k+1:n) + delta))   -   m(n-k+1).^2/(2*sigma^2)) + log(beta) );  % extended version of eq. (7)

% Gradient of the Q_MPS function at 'sigma'
grad =  -(1/((n-k+2)*sigma^3)) * ( (m(k)^2 * alpha(k))/(alpha(k) - 1 + delta)   +   sum((m(1:n-k).^2 .* alpha(1:n-k) - m(k+1:n).^2 .* alpha(k+1:n)) ./ (alpha(1:n-k) - alpha(k+1:n) + delta))   +   m(n-k+1)^2 ); % extended version of eq. (15)