【问题标题】:How to get the mean of first values in arrays in matrix in Matlab如何在Matlab中获取矩阵中数组中第一个值的平均值
【发布时间】:2018-03-09 16:29:38
【问题描述】:

如果我有一个方阵数组,例如:

[1,2], [2,3]

[5,9], [1,4]

我想得到每行数组中第一个值的平均值,例如:

1.5

3

这在 Matlab 中可能吗? 我已经使用 mean(matrix, 2) 命令来处理单个值的矩阵,但我不确定如何扩展它来处理数组。

【问题讨论】:

  • 您的矩阵是 3D 矩阵,这些值用作切片吗?您的符号令人困惑。请使用实际的 MATLAB 语法来表达您的矩阵。

标签: arrays matlab matrix vector mean


【解决方案1】:

获取矩阵所有数组的第一个元素,然后调用mean函数

mean(matrix(:,:,1))

也许你需要在致电mean 之前进行重塑

a = matrix(:,:,1); 
mean(a(:))

【讨论】:

  • 虽然这更好地回答了这个问题,但这都是猜测。我们对矩阵的实际形状或格式一无所知,所以当 OP 决定编辑他的问题时,这个答案可能不正确......尽管我怀疑他永远不会回来。
【解决方案2】:

您可以在 mean 函数中应用 mean 函数来获取索引 1 处二维数组的总平均值。您可以对索引 2 处的数组进行类似操作。考虑以下快照。

【讨论】:

  • 拥有实际文本而不是快照更有用。
  • 这不是他想要的结果
【解决方案3】:

长时间盯着您的问题后,您的输入看起来像是一个 3D 矩阵,其中格式的每一行对应一个 2D 矩阵切片。因此,在正确的 MATLAB 语法中,您的矩阵实际上是:

M = cat(3, [1,2; 2,3], [5,9; 1,4]);

因此我们得到:

>> M = cat(3, [1,2; 2,3], [5,9; 1,4])

M(:,:,1) =

     1     2
     2     3


M(:,:,2) =

     5     9
     1     4

第一个切片是矩阵[1,2; 2,3],第二个切片是[5,9; 1,4]。从它的样子来看,您只想要每个切片的第一列的平均值,并将其作为单个值向量返回。因此,使用mean 函数并索引到所有行和切片的第一列。不幸的是,这将成为一个单例 3D 数组,因此您需要挤出单例维度。

事不宜迟:

O = squeeze(mean(M(:,1,:)))

因此我们得到:

>> O = squeeze(mean(M(:,1,:)))

O =

    1.5000
    3.0000

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2013-06-16
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2013-09-23
    • 1970-01-01
    相关资源
    最近更新 更多