matlab 中的中值函数未返回正确值

matlab 中的中值函数未返回正确值

我遇到了这个问题,即这些数字的传播没有在 matlab 中返回正确的值。

https://docs.google.com/spreadsheets/d/1jOPRVZR_XJ-v1nEEvuMfzoJOh702A4wg/edit#gid=1868814066

=MEDIAN (A1:A34)告诉我-.380905哪个是正确的。

A=[-0.264, 0.4459, -0.49781, 1.77666,-0.55638,0.87174,-0.68504,0.92835,-0.80581,-0.87505,0.39111,-0.76054,-0.68987,1.60776,-0.19637,1.13956,1.53606,-0.08254,0.12186,0.08428,0.61663,-1.47958,2.28422,-0.80891,-0.55738,0.2238,-0.93291,0.3791,-0.63074,2.14683,-1.49948,1.21954,-0.79734,-0.51303,-1.0687,-0.61345,-1.02592,-0.87653,0.444]

M = median(A)

返回 M = -0.2640。我在 MATLAB 中做了这个计算,但结果是错误的。

编辑:我发现这个计算在 excel 中是正确的,但在 Matlab 中是错误的。看来 Matlab 只会在偶数数组中选取两个中间数字中的一个。

答案1

返回 M = -0.2640 我在 matlab 中做了这个计算。

您的值有偶数个,因此中位数可能会有不同的解释

  • Excel 只取中间两个项的平均值(这也是我在其他工具中看到的做法)
  • matlab 会给出一个中间值,但由于有偶数值,所以不存在确切的中间值

答案2

为了扩展@Máté Juhász 的答案,这里使用 Median 函数时的注意事项之一:

如果集合中的数字个数为偶数,则MEDIAN计算中间两个数字的平均值。请参阅示例中的第二个公式。

你有 34 个数字。按顺序排列后,中间的两个数字是-0.49781-0.264。它们的平均数是:

(-0.49781-0.264)/2=-0.380905

因此,Excel 给出了备注中所述的正确答案。

正如@Máté Juhász 所说,使用 Matlab 时,您只能得到中间一个数字作为答案。

答案3

您的示例有 39 个值,因此排序后中间的值是 -0.2640。Matlab 犯了如此严重的错误,真是太糟糕了。

相关内容