将三维数组简化为有效数字的向量

时间:2018-10-11 17:02:26

标签: matlab matrix histogram

嗨,我在Matlab中有一个三维数组,类似于<10 x 10 x 100>,我想将此数组简化为一个有效数字的向量。例如,我想将每个矩阵(图片)分成两半,计算sum(left)-sum(right),然后将这个<1 x 100>向量返回。不幸的是,我无法弄清楚或不知道该怎么做。可能吗?我怎么能做到呢?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

给定矩阵A,这里是单线:

result = -squeeze(diff(sum(reshape(A, [50 2 100]), 1), 1, 2)).';

工作方式:

首先,reshape将数据放入50 x 2 x 100矩阵,其中每个矩阵左半边的值在第1列中,每个矩阵右半边的值在第2列中。然后在每列下使用sum,以得到1×2×100矩阵。然后,您可以使用diff来计算两列之间的差值,尽管这会从右边减去左列,因此必须加减号以取反结果。可以使用squeeze将生成的1×1×100矩阵折叠为100×1列向量,并将其transposed折叠为行向量。另外,您可以使用另一个reshape代替squeeze并转置:

result = -reshape(diff(sum(reshape(A, [50 2 100]), 1), 1, 2), [1 100]);