实施经验 cdf c++
implement empirical cdf c++
我想根据收到的 N 个样本固定的间隔在 C++ 中定义经验 cdf,我应该保存 2 个向量(T 和 Y)!
我制作了这段代码,但没有用:
double cum_dist_funct::real_cdf_function(vec X,double x,int N,int Ndft,vec &T, vec &Z)
{
Z.set_size(X.length());
Z.zeros();
vec V;
V.set_size(N);
V.zeros();
double f0=0;
T.set_size(X.length());
T.zeros();
T=X;
for (int i=0; i<Ndft;i++)
{
V=X.get(i*N,(i+1)*N-1);
for(int j=0;j<N;j++)
{
if(x<V[0]) f0=0;
else if (V[j]<=x && x<V[j+1]) f0=j/N;
else if (x>=V[N-1]) f0=1;
Z[i*N+j]=f0;
}
}
return f0;
}
在此先感谢您的帮助!
不清楚您为什么需要 N
、Ndft
和 X.length()
。一个值还不够吗?
正如某人所提到的,在整数除法中 j/N
你会得到零。请设为double(j)/double(N)
我想根据收到的 N 个样本固定的间隔在 C++ 中定义经验 cdf,我应该保存 2 个向量(T 和 Y)! 我制作了这段代码,但没有用:
double cum_dist_funct::real_cdf_function(vec X,double x,int N,int Ndft,vec &T, vec &Z)
{
Z.set_size(X.length());
Z.zeros();
vec V;
V.set_size(N);
V.zeros();
double f0=0;
T.set_size(X.length());
T.zeros();
T=X;
for (int i=0; i<Ndft;i++)
{
V=X.get(i*N,(i+1)*N-1);
for(int j=0;j<N;j++)
{
if(x<V[0]) f0=0;
else if (V[j]<=x && x<V[j+1]) f0=j/N;
else if (x>=V[N-1]) f0=1;
Z[i*N+j]=f0;
}
}
return f0;
}
在此先感谢您的帮助!
不清楚您为什么需要
N
、Ndft
和X.length()
。一个值还不够吗?正如某人所提到的,在整数除法中
j/N
你会得到零。请设为double(j)/double(N)