📄 custom_betapdf.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 + -