加权中位数定义如下:

如果x是N个元素的排序数组,并且w是总权重W的权重数组,则加权中值是最后的x [i],使得w [i]和所有先前权重之和小于大于或等于S / 2.

在C中,可以这样表示(假设x,w和W如上所定义)

double sum = 0;

int i;

for(i = 0; i < N; ++i)

{

sum += w[i];

if(sum > W/2)

break;

}

double median = x[i-1];

编辑

所以看来我匆忙地回答了这个问题,犯了一些错误.我从R documentation发现了加权中位数的简单描述,它描述如下:

For the n elements x = c(x[1], x[2], ..., x[n]) with positive

weights w = c(w[1], w[2], ..., w[n]) such that sum(w) = S, the

weighted median is defined as the element x[k] for which initial the

total weight of all elements x[i] < x[k] is less or equal to S/2

and for which the total weight of all elements x[i] > x[k] is less

or equal to S/2.

从这个描述中,我们有一个相当直接的算法实现.如果我们从k == 0开始,那么在x [k]之前没有元素,所以元素x [i]< x [k]将小于S / 2.根据数据,元素x [i]的总重量> x [k]可以或不小于S / 2.所以我们可以向前移动数组,直到第二个和小于或等于S / 2:

#include

#include

#include

int main()

{

std::size_t const N = 5;

double x[N] = {0, 1, 2, 3, 4};

double w[N] = {.1, .2, .3, .4, .5};

double S = std::accumulate(w, w+N, 0.0); // the total weight

int k = 0;

double sum = S - w[0]; // sum is the total weight of all `x[i] > x[k]`

while(sum > S/2)

{

++k;

sum -= w[k];

}

std::cout << x[k] << std::endl;

}

注意,如果中值是最后一个元素(medianIndex == N-1),那么sum == 0,所以条件和> S / 2失败.因此,k永远不会超出界限(除非N == 0!).此外,如果有两个元素满足条件,则算法总是选择第一个.

c语言加权成绩,c – 加权中值计算相关推荐

  1. c语言用一维数组做中值滤波,快速中值滤波及c语言实现

    快速中值滤波及c语言实现 学生姓名:刘勇学号: 6100410218 专业班级:数媒101 [摘要]本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程序运行的时间复杂度和 ...

  2. c语言均值滤波步骤,关于中值滤波算法,以及C语言实现

    中值滤波是一种非线性的图像平滑方法,与均值滤波器以及其他线性滤波器相比,它能够很好地滤除脉冲噪声,同时又能够保护目标图像边缘.它是一种邻域运算, 类似于卷积,但计算的不是加权求和,而是把邻域中的像素按 ...

  3. c语言学生成绩统计问题分析,统计计算学生成绩类有关问题ACing

    统计计算学生成绩类问题ACing 1,输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的学生人数. int count,i,n; //count 为记录不及格成绩的个数 doubl ...

  4. 高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx

    . .. 快速中值滤波及c语言实现 学生姓名: 刘 勇 学 号: 6100410218 专业班级: 数媒101 [摘要]本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程 ...

  5. 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法

    摘  要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...

  6. PML之平均 、中值 、众数、标准偏差、方差

    NumPy模块为此提供了一种方法,可以计算平均.中值和众数 1.平均值 import numpy as npvalue=[2,4,6,14,34,88,98,17,47]#计算平均值 mean=np. ...

  7. NR基础篇下——中值滤波、多级中值滤波、多级中值混合滤波、加权中值滤波、中值有理滤波

    上一篇分享了一些均值滤波相关的算法,均值滤波作为一种线性滤波器,在滤除噪声的同时也会导致边缘模糊问题.而且均值滤波对高斯噪声的效果很好,但是对于椒盐噪声的效果就很一般.但是中值滤波作为一种顺序滤波器, ...

  8. 数字图像处理——中值滤波中心加权中值滤波

    引言:在处理图像时,线性滤波将破坏边缘,而且不能有效滤除脉冲噪声.非线性滤波基于对输入信号序列的一种非线性映射关系,常可把某一特定的噪声近似映射为零而保留信号的重要特征,因而可以在一定程度上克服线性滤 ...

  9. Opencv学习笔记 各向异性滤波/均值滤波/高斯滤波/中值滤波/加权中值滤波/高斯低通滤波

    各向异性滤波         各向异性扩散滤波主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的,和双边滤波很像. public static void ImageA ...

  10. R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    全文下载链接:http://tecdat.cn/?p=22632 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的异常点进行建模的方法. 相关视频 我们将对一种叫做STL的算法进行研究,STL是 ...

最新文章

  1. SharePoint2013 Online中InfoPath 无法调用WebService
  2. 《系统集成项目管理工程师》必背100个知识点-53项目团队建设的五个阶段及其特点...
  3. mysql auto position_MHA-Failover(GTID,Auto_Position=0)
  4. JSON数据的解析方式
  5. Pandas GroupBy对象
  6. Url ReWriting
  7. Hadoop2 实战系列之1 -- Hortonworks Sandbox的安装和使用
  8. Is there anyway to discover which ip addresses are connected to the db?
  9. 我的QQ斗地主史及斗地主经验
  10. c语言自学 中文,C语言自学《一》 ---- 初探C语言
  11. 面试题10:青蛙跳台阶
  12. Codeforces Round #365 (Div. 2) C. Chris and Road(思维题-零点定理)
  13. [译] Architecture Components 之 Room Persistence Library
  14. P3332 [ZJOI2013]K大数查询 - 整体二分-区间修改
  15. “Google chrome”,安卓和苹果版本,以及他的版本历史真是绚丽啊!
  16. java抽象类变量_Java抽象类
  17. python是什么模块,python中什么是模块
  18. MATLAB中detrend函数使用
  19. 微信小程序的导航栏颜色
  20. 魅族MX4安装Ubuntu Touch 16.04

热门文章

  1. win7下如何显示缅文和使用缅文输入法?
  2. 最好用的七大顶级 API 接口测试工具
  3. 接口测试工具设计与实现
  4. 大数据预测模型的深度学习导论
  5. 未来教育计算机二级office评分有问题,未来教育计算机二级-未来教育计算机二级msoffice题库评分 – 手机爱问...
  6. 梯度、散度、旋度、拉普拉斯算子
  7. Maven:repositories、distributionManagement、pluginRepositories中repository的区别(轻松搞明白)
  8. 腾讯文档快捷键在哪里
  9. Everything软件配置
  10. 教你轻松创建谷歌账号、谷歌邮箱!