Input
FilteredMedian
unknown

Input [num] FilteredMedian [num]

FilteredMedian = topQuartilMedian(Input[])

Function

function topQuartilMedian(history) {
	var sortedHistory = sort(valueHistory(history));
	var topQuartil = sortedHistory.slice(history.length * 0.75);
	var medianIndex = topQuartil.length % 2 == 0 ? (topQuartil.length / 2) - 1 : (topQuartil.length - 1) / 2
	return topQuartil[medianIndex];
}

function valueHistory(history) {
	var valueHistory = [];
	for (var i = 0; i < history.length; i++) {
		valueHistory.push(history[i].value);
	}
	return valueHistory;
}

function  sort(history) {
	return quickSort(history, 0, history.length - 1);
}

function  quickSort(arr, left, right) {
	var i = left;
	var j = right;
	var tmp;
	pivotidx = (left + right) / 2; 
	var pivot = arr[pivotidx.toFixed()];  
	while (i <= j) {
		while (parseInt(arr[i]) < pivot)
		i++;
		while (parseInt(arr[j]) > pivot)
			j--;
		if (i <= j) {
			tmp = arr[i];
			arr[i] = arr[j];
			arr[j] = tmp;
			i++;
			j--;
		}
	}
	if (left < j)
		quickSort(arr, left, j);
	if (i < right)
		quickSort(arr, i, right);
	return arr;
}

  • @export: topQuartilMedian(HISTORY_NUMBER) -> NUMBER

filteredMedian2

Add new attachment

Only authorized users are allowed to upload new attachments.
This page (revision-4) was last changed on 07-Mar-2017 17:13 by Albrecht Striffler