曲线与matlab的集成
我试图用matlab计算假阳性率和假阴性率。我已经生成了一条s曲线,带有一个阈值(在某个点切割曲线的垂直线)。阈值左侧曲线下的所有值均为假阳性,而阈值右侧曲线下以外的所有值均为假阴性。我必须对假阳性曲线下的区域和从右到右的阈值区域(从曲线下到阈值右侧的区域)进行积分,以计算假阴性。在matlab中尝试以下代码时,我遇到了一个奇怪的错误曲线与matlab的集成,matlab,math,false-positive,Matlab,Math,False Positive,我试图用matlab计算假阳性率和假阴性率。我已经生成了一条s曲线,带有一个阈值(在某个点切割曲线的垂直线)。阈值左侧曲线下的所有值均为假阳性,而阈值右侧曲线下以外的所有值均为假阴性。我必须对假阳性曲线下的区域和从右到右的阈值区域(从曲线下到阈值右侧的区域)进行积分,以计算假阴性。在matlab中尝试以下代码时,我遇到了一个奇怪的错误 syms p; func = (1 - (1 - p^5)^10); areaOfRect = (1-threshold)*1;
syms p;
func = (1 - (1 - p^5)^10);
areaOfRect = (1-threshold)*1;
fn = areaOfRect - int(func,p,0,threshold);
fp = int(func,p,threshold,1);
fn = 2575908626830580620307480425353828014939901186516550645854841225649977931806217173152793134129 ......
fp = 20989145492538166675017041353401970126067731601439729556868060737768716969716535384....
这些输出非常奇特,这让我觉得我没有以正确的方式使用integrate函数。如果有任何帮助,我们将不胜感激。看起来您只是得到了有理形式的精确解
a/b
,对浮点的求值应该与数值积分相匹配
fn_sym = double(fn)
fn_num = areaOfRect - quadl(@(p)(1 - (1 - p.^5).^10),0.01,threshold)
fp_sym = double(fp)
fp_num = quadl(@(p)(1 - (1 - p.^5).^10),threshold,1.01)
看起来你只是得到了有理形式的精确解,
a/b
,对浮点的求值应该与数值积分相匹配
fn_sym = double(fn)
fn_num = areaOfRect - quadl(@(p)(1 - (1 - p.^5).^10),0.01,threshold)
fp_sym = double(fp)
fp_num = quadl(@(p)(1 - (1 - p.^5).^10),threshold,1.01)
看起来你只是得到了有理形式的精确解,
a/b
,对浮点的求值应该与数值积分相匹配
fn_sym = double(fn)
fn_num = areaOfRect - quadl(@(p)(1 - (1 - p.^5).^10),0.01,threshold)
fp_sym = double(fp)
fp_num = quadl(@(p)(1 - (1 - p.^5).^10),threshold,1.01)
看起来你只是得到了有理形式的精确解,
a/b
,对浮点的求值应该与数值积分相匹配
fn_sym = double(fn)
fn_num = areaOfRect - quadl(@(p)(1 - (1 - p.^5).^10),0.01,threshold)
fp_sym = double(fp)
fp_num = quadl(@(p)(1 - (1 - p.^5).^10),threshold,1.01)
您的文字描述是:“阈值左侧曲线下的所有值都是误报”,但您的代码计算从
阈值到1.01(右侧)的积分。我无法判断哪一个是正确的。您的文本描述中说:“阈值左侧曲线下的所有值都是误报”,但您的代码计算从阈值到1.01(右侧)的积分。我无法判断哪一个是正确的。您的文本描述中说:“阈值左侧曲线下的所有值都是误报”,但您的代码计算从阈值到1.01(右侧)的积分。我无法判断哪一个是正确的。您的文本描述中说:“阈值左侧曲线下的所有值都是误报”,但您的代码计算从阈值到1.01(右侧)的积分。我不能判断哪个是正确的。用double
代替eval
<代码>求值
应该尽可能避免。所以我所需要做的就是将fp和fn值转换为双倍?是的,谢谢你的检查方法。它们确实匹配。使用double
而不是eval
<代码>求值
应该尽可能避免。所以我所需要做的就是将fp和fn值转换为双倍?是的,谢谢你的检查方法。它们确实匹配。使用double
而不是eval
<代码>求值
应该尽可能避免。所以我所需要做的就是将fp和fn值转换为双倍?是的,谢谢你的检查方法。它们确实匹配。使用double
而不是eval
<代码>求值
应该尽可能避免。所以我所需要做的就是将fp和fn值转换为双倍?是的,谢谢你的检查方法。他们俩确实很般配。那是我的错误。我试过的东西不管用。不管怎样,我现在把它修好了。那是我的错误。我试过的东西不管用。不管怎样,我现在把它修好了。那是我的错误。我试过的东西不管用。不管怎样,我现在把它修好了。那是我的错误。我试过的东西不管用。反正我现在修好了。