* Get median of data in one dimension
(dim: DimensionIndex)
| 511 | * Get median of data in one dimension |
| 512 | */ |
| 513 | getMedian(dim: DimensionIndex): number { |
| 514 | const dimDataArray: number[] = []; |
| 515 | // map all data of one dimension |
| 516 | this.each([dim], function (val) { |
| 517 | if (!isNaN(val as number)) { |
| 518 | dimDataArray.push(val); |
| 519 | } |
| 520 | }); |
| 521 | |
| 522 | // TODO |
| 523 | // Use quick select? |
| 524 | asc(dimDataArray); |
| 525 | const len = this.count(); |
| 526 | // calculate median |
| 527 | return len === 0 |
| 528 | ? 0 |
| 529 | : len % 2 === 1 |
| 530 | ? dimDataArray[(len - 1) / 2] |
| 531 | : (dimDataArray[len / 2] + dimDataArray[len / 2 - 1]) / 2; |
| 532 | } |
| 533 | |
| 534 | /** |
| 535 | * Retrieve the index with given raw data index. |
no test coverage detected