回 帖 发 新 帖 刷新版面

主题:[讨论]探讨!matlab中如何求自定义密度函数的分布函数值?

……想和大家探讨一下,matlab中如何用密度函数求解分布函数的问题

首先,密度函数是自己定义的函数,不规整,并不符合任何一种规范形式,但是函数形式已知:
sum(exp((-1/2).*(x-R(i)./h_sigma).^2))
h_sigma是已知的数值量
sum是根据R(i)进行的累加,R是一个1025×1的矩阵
x-R(i)是计算输入量x分别与R(i)的距离,得到一个1025×1的向量再对这个向量进行exp等运算,然后将处理过的距离累加
x是一个n维向量,x-R(i)分别计算的是x向量中的每个值与R(i)的距离,也就是x-R(i)得到是1025×n的矩阵


[color=FF00FF]下边是我个人认为的几种求解分布函数的方法[/color],力图求出分布函数值,有经验的高人多数采用何种方法计算呢?想请教一下
已知:密度函数解析式f,因为分布函数F=int(f,x,t,-inf)(上限暂时用符号t表示)

1、因为-inf 通常无法顺利积分成功,这里采用-9999代替-inf,在matlab中直接应用int(f,x,t,-9999)……精度上比第二种好,但是可能存在积分后的分布函数没有解析式的情况

2、int函数经常会有局限性,在无法应用int函数的时候,这里我采用了设定较小步长
(如:bu=-9999:0.00001:t)
直接累加
累加函数即为密度函数f

[color=FF0000]经常做这方面内容的高人们是否认同我提出的方法?如果不,各位都采用什么方法呢[/color]

下边,我将我编的计算密度函数的matlab代码写出来,方便交流
function f=f_kernel(x)
load E:\diyunumbers\diyuclose_hsi.txt;
%不用理会,这里是数据导入部分
for i=2:1025;
    diyuclose_r(i)=log(diyuclose_hsi(i))-log(diyuclose_hsi(i-1));
end
diyuclose_r;
diyuclose_r_mean=mean(diyuclose_r);%均值
diyuclose_sigma=std(diyuclose_r);%方差
T=length(diyuclose_r);
h_sigma=10.06.*diyuclose_sigma.*T^(-1/5); 

y(1:1025,1:1025)=0;% 给矩阵设定维数,定义零矩阵
    for j=1:1025    
    xx(:,j)=x(j).*ones(1025,1);
    end
 xx;
 for k=1:1025
 y(:,k)=exp((-1/2).*((xx(:,k)-x)./h_sigma).^2);
 end
f_=(1/(T*h_sigma)).*(1/sqrt(2.*pi)).*sum(y);
f=f_';

回复列表 (共2个回复)

沙发

听说,对于e指数函数的积分可以采用normcdf函数来解决……,但是具体办法不详……
哪位了解的大人能来说说呢?

板凳


确实可以用normcdf做出来……不过应用x-R(i)的时候需要循环累加一下……

我来回复

您尚未登录,请登录后再回复。点此登录或注册