MATLAB 中整个多维数组(不仅仅是一维)的中位数

Median of an ENTIRE multi-dimensional array (not of just one dimension) in MATLAB

我有一个 10 x 10 的值数组,A。我需要所有这些值的中位数 M。我可以很容易地找到沿行或沿列的中位数:

M = median(A,1) %or
M = median(A,2)

但是,M = median(A) 也 returns 沿行的中位数。

如何找到所有值的一个中位数?我知道我可以将数组转换为一个非常非常长的向量,但这似乎令人不快且效率低下。有更简单的解决方案吗?我也希望能够对多维数组执行此操作。

谢谢!

首先通过索引 (:) 进行线性化。这会将任何数组转换为列数组。然后计算中位数:

M = median(A(:));

我认为使用 (:) 建立索引不需要任何内存重新分配。它只是按 column-major 顺序读取数组。