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