MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   帮助理解确定的积分 (https://www.labfans.com/bbs/showthread.php?t=23863)

poster 2019-12-10 20:48

帮助理解确定的积分
 
我正在尝试使用MATLAB和C#将书中的函数转换为代码。

我首先尝试使函数在MATLAB中正常工作。

以下是说明:

[IMG]https://i.stack.imgur.com/GHd9g.png[/IMG]

变量是:

xt and m can be ignored. zMax = Maximum Sensor Range (100) zkt = Sensor Measurement (49) zkt* = What sensor measurement should have been (50) oHit = Std Deviation of my measurement (5) 我已经在MATLAB中编写了第一个公式N(zkt; zkt *,oHit):

hitProbabilty = (1/sqrt( 2*pi * (oHit^2) ))... * exp(-0.5 * (((zkt- zktStar) ^ 2) / (oHit^2)) ); 这给了我期望的高斯曲线。

我下面的定积分有问题,我不明白如何将其转换为实数,因为我从代码中得到了可怕的值,这是这样的:

func = @(x) hitProbabilty * zkt * x; normaliser = quad(func, 0, max) ^ -1; hitProbabilty = normaliser * hitProbabilty; 有人可以帮我这个积分吗?它应该使我的曲线归一化,但是会发疯....(我正在针对zkt 0:1:100进行此操作,其他所有条件都相同,并绘制出应该输出的概率。)



[B]回答:[/B]

您应该使用[URL="http://en.wikipedia.org/wiki/Error_function"]误差函数[/URL] [URL="http://www.mathworks.com/help/techdoc/ref/erf.html"]ERF[/URL] (在基本MATLAB中可用)

[B]编辑1:[/B]

如[URL="https://stackoverflow.com/questions/3644037/help-understanding-a-definitive-integral/3644123#3644123"]@Jim Brissom[/URL]所述,累积分布函数(CDF)通过以下方式与误差函数相关:

normcdf(X) = (1 + erf(X/sqrt(2)) / 2 , where X~N(0,1) 请注意, [URL="http://www.mathworks.com/access/helpdesk/help/toolbox/stats/normcdf.html"]NORMCDF[/URL]需要统计工具箱

[B]编辑2:[/B]

我认为看到这些评论会有一个小混乱。.上面仅计算归一化因子,因此,如果要计算某个值范围内的最终概率,则应执行以下操作:

zMax = 100; %# Maximum Sensor Range zktStar = 50; %# What sensor measurement should have been oHit = 5; %# Std Deviation of my measurement %# p(0


所有时间均为北京时间。现在的时间是 14:17

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.