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 顺序读取数组。
我有一个 10 x 10 的值数组,A
。我需要所有这些值的中位数 M
。我可以很容易地找到沿行或沿列的中位数:
M = median(A,1) %or
M = median(A,2)
但是,M = median(A)
也 returns 沿行的中位数。
如何找到所有值的一个中位数?我知道我可以将数组转换为一个非常非常长的向量,但这似乎令人不快且效率低下。有更简单的解决方案吗?我也希望能够对多维数组执行此操作。
谢谢!
首先通过索引 (:)
进行线性化。这会将任何数组转换为列数组。然后计算中位数:
M = median(A(:));
我认为使用 (:)
建立索引不需要任何内存重新分配。它只是按 column-major 顺序读取数组。