gpt4 book ai didi

matlab - 从向量创建累积分布

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:56 25 4
gpt4 key购买 nike

我需要根据向量中包含的一些数字创建一个累积分布。该向量计算点积运算在我给出的算法中发生的次数。

一个示例向量是

myVector = [100 102 101 99 98 100 101 110 102 101 100 99]

我想根据 0 到 120 的范围绘制点积少于 99 的概率。内置函数

Cumdist(MyVector)

不合适,因为我需要在比 cumdist 当前提供的范围更广的范围内绘图。

我试过用

plot([0 N],cumsum(myVector))

但我的向量中有多个条目具有相同的值,我不知道如何不重复计算。

下面是一些 python 代码,可以完成我想要的操作:

count = [x[0] for x in tests]
found = [x[1] for x in tests]
found.sort()
num = Counter(found)
freqs = [x for x in num.values()]
cumsum = [sum(item for item in freqs[0:rank+1]) for rank in xrange(len(freqs))]
normcumsum = [float(x)/numtests for x in cumsum]

tests 是一个数字列表,表示完成点积的次数。

这是我正在寻找的示例:

Example cumulative distribution

最佳答案

要创建累积分布,您不能直接在向量上使用 cumsum。请改为执行以下操作:

sortedVector = sort(myVector(:));
indexOfValueChange = [find(diff(sortedVector));true];
relativeCounts = (1:length(sortedVector))/length(sortedVector);

plot(sortedVector(indexOfValueChange),relativeCounts(indexOfValueChange))

编辑

如果您的目标只是修改绘图的 x 范围,

xlim([0 120]) 

应该做你需要的。

关于matlab - 从向量创建累积分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632472/

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