gpt4 book ai didi

ios - 高斯方程的缩放

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:17 25 4
gpt4 key购买 nike

我在 iOS 应用程序中使用高斯方程来实现特定的照片效果。

我使用:

   double sigmaX = ...; //some value here

for(int i=0;i<height;i++)
{
double F = 0;
double step = -(pos)*width/20;

/*height,width,pos - all predefined, no problem there*/

for(int j=0;j<4*width;j+=4)
{

F = (double) ((1/1)*exp(-sigmaX*(pow((step++)/1, 2.0)))) ;
//do some operation here...

}
}

并且 F 的值用于确定在其他地方用完的特定强度。

到目前为止一切顺利....F 是预期的典型钟形曲线。

但是,问题是,我想根据用户输入缩放这条曲线的标准偏差。

例如,在下图中,我想将曲线从绿线移动到红线(蓝色可能是中间线),希望以线性步骤进行:

Variance of SD of Gaussian Curve

现在,给定标准符号:

gaussian curve equation

并将它与我在代码中实现它的方式进行比较,我想到了改变 1/sqrt(sigmaX) 来改变比例/SD。我尝试以线性步长递增 1/sqrt(sigmaX)(以获得线性递增)或递增 x^n 以获得 SD 中 n 递增的幂,但均无效。

我有点坚持这个概念。

能否请您告诉我如何按预定义比率缩放标准偏差,即我可能希望它是原始 SD 的 1.34 或 3.78 倍,它会相应地将 +3sigma 范围扩大到 -3sigma。

最佳答案

你的计算:

F = (double) ((1/1)*exp(-sigmaX*(pow((step++)/1, 2.0)))) ;

不反射(reflect)您展示的高斯公式。它应该是这样的:

double dSigma = 1.0;
static const double dRootTwoPi = sqrt(2.0 * M_PI);

F = (1.0 / (dSigma * dRootTwoPi)) * exp(-0.5 * pow(step++ / dSigma, 2.0));

然后您可以改变 dSigma 从 1.0 到 3.0(或其他)以获得您想要的效果。

关于ios - 高斯方程的缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16293507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com