gpt4 book ai didi

matlab - 在matlab中,计算一列的一部分的平均值,其中另一列满足条件

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:48 25 4
gpt4 key购买 nike

我是 matlab 的新手,我很好奇如何做到这一点:

我有一个相当大的 (27000x11) 矩阵,第 8 列包含一个数字,该数字有时会发生变化,但对于大约 2000 行(不一定连续)是恒定的。

我想为第 8 列具有相同值的那些行计算第 3 列中条目的平均值。这适用于第 8 列的每个值。我还想将第 3 列的均值绘制为第 8 列值的函数,但如果我能得到一个包含 [mean_of_3rd,8th] 的新矩阵 (2x2),我就能做到这一点。

例如:(为了方便使用较小的矩阵)

1 2 3 4 5
3 7 5 3 2
1 3 2 5 3
4 5 7 5 8
2 4 7 4 4

由于第 4 列在第 1 行和第 5 行中具有相同的值,我想计算 2 和 4 的平均值(第 2 列的相应元素,斜体粗体)并将其与第 4 列的值一起放入另一个矩阵中值(value)。 3 和 5(粗体)相同,因为第 4 列对这两者具有相同的值。

3 4
4 5

等等...这有可能以简单的方式实现吗?

最佳答案

使用全能的、未被充分利用的 accumarray :

此行为您提供第 2 列累加的第 4 列的平均值:

means = accumarray( A(:,4) ,A(:,2),[],@mean)

这一行给出了每组元素的数量:

count = accumarray( A(:,4) ,ones(size(A(:,4))))

现在,如果您只想过滤至少出现一次的那些:

>> filtered = means(count>1)

filtered =

3
4

这仅适用于第 4 列中的正整数。


计算每个集合中元素数量的另一种可能性:

 count = accumarray( A(:,4) ,A(:,4),[],@numel)

关于matlab - 在matlab中,计算一列的一部分的平均值,其中另一列满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12788767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com