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

📄 custom_betapdf.m

📁 toolbox of BVQX, This is the access between BV and matlab. It will help you to analysis data from BV
💻 M
字号:
function bpdf = custom_betapdf(x, a, b)
% custom_betapdf  - PDF of the beta distribution
%
% FORMAT:       bcdf = custom_betacdf(x, a, b)
%
% Input fields:
%
%       x           values for which the beta PDF is computed
%       a, b        beta function parameters
%
% Output fields:
%
%       bpdf        beta pDF of for (x, a, b)

% Version:  v0.6f
% Build:    7070510
% Date:     Jul-05 2007, 10:29 AM CEST
% Author:   KH <Kurt.Hornik@wu-wien.ac.at> (OCTAVE)

% check arguments
if nargin < 3 || ...
   ~isa(x, 'double') || ...
   ~isa(a, 'double') || ...
   ~isa(b, 'double') || ...
    isempty(a) || ...
    isempty(b)
    error( ...
        'BVQXtools:BadArgument', ...
        'Missing or invalid argument given.' ...
    );
end
if isempty(x)
    bpdf = [];
    return;
end
osize = size(x);
if numel(x) == 1
    if numel(a) > 1
        osize = size(a);
    elseif numel(b) > 1
        osize = size(b);
    end
end
x = x(:);
a = a(:);
b = b(:);

% build output
bpdf = zeros(osize);
bpdf(~(a > 0) | ~(b > 0) | isnan(x)) = NaN;

  
% regular cases
k = find(x > 0 & x < 1 & a > 0 & b > 0);
if ~isempty(k)
    if numel(a) == 1 && ...
        numel(b) == 1
        bpdf(k) = exp((a - 1) .* log(x(k)) + ...
		    (b - 1) .* log(1 - x(k))) ./ beta(a, b);
    elseif numel(a) == 1
        bpdf(k) = exp((a - 1) .* log(x(k)) + ...
		    (b(k) - 1) .* log(1 - x(k))) ./ beta(a, b(k));
    elseif numel(b) == 1
        bpdf(k) = exp((a(k) - 1) .* log(x(k)) + ...
		    (b - 1) .* log(1 - x(k))) ./ beta(a(k), b);
    else
        bpdf(k) = exp((a(k) - 1) .* log(x(k)) + ...
		    (b(k) - 1) .* log(1 - x(k))) ./ beta(a(k), b(k));
    end
end

% reshape
bpdf = reshape(bpdf, osize);

⌨️ 快捷键说明

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