AS3 -sort数组值走的人平均在中间 [英] AS3 -sort array values and take average of ones in the middle

查看:153
本文介绍了AS3 -sort数组值走的人平均在中间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图创建AS3相当于两个中位数和平均过滤器。

Trying to create the AS3 equivalent of both median and averaging filters.

这是平均滤波器只会越来越数组内容的平均值。

An averaging filter would simply be getting the average values of an array's contents.

我将如何排序第一的数组长度说10,然后拿到5中间值的平均值?

How would I first sort an array of say length 10, and then get the average of the 5 middle values?

推荐答案

假设你有一个阵列(或 矢量 )数字:

Assuming you have an Array (or Vector) of numbers:

使用排序() Array.NUMERIC来

numbers.sort(Array.NUMERIC);

使用片()复制一个子集排序的数组的:

Use slice() to copy a sub-set of the sorted array:

var middleIndex:int = numbers.length / 2;
var middleNumbers:Array = numbers.slice(middleIndex - 2, middleIndex + 2);

写它采用了循环遍历元素和它们求和函数,然后通过数组的长度划分的总和:

Write a function which uses a for loop to iterate over the elements and sum them, then divide the sum by the array's length:

function average(numbers:Array):Number {
    var sum:Number = 0;
    for each(var n:Number in numbers){
        sum += n;
    }
    return sum / numbers.length;
}

有关的中位数,你想要的中间数如果长度为奇数,或两个中间数的平均如果长度为偶数

For the median, you want the middle number if the length is odd, or the average of the two middle numbers if the length is even:

function median(numbers:Array):Number {
    var middle:Number = numbers.length / 2;
    if(middle is int){
        return numbers[middle];
    }else{
        return (numbers[int(middle)] + numbers[int(middle) + 1]) / 2;
    }
}

这篇关于AS3 -sort数组值走的人平均在中间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆