对于给定的矩阵 A,我如何创建一个大小相同的矩阵 B,其中每一列都是所有其他列的平均值(或任何其他函数)?
例子:
上的一个函数A = [
1 1 1
2 3 4
4 5 6]
应该导致
B = [
1 1 1
3.5 3 2.5
5.5 5 4.5]
最佳答案
bsxfun
的完美设置 -
B = bsxfun(@minus,sum(A,2),A)./(size(A,2)-1)
说明:将其分解为两步
给定
>> A
A =
1 1 1
2 3 4
4 5 6
第 1 步:对于 A 中的每个元素,计算除元素本身之外的所有元素的总和 -
>> bsxfun(@minus,sum(A,2),A)
ans =
2 2 2
7 6 5
11 10 9
第 2 步:将每个元素结果除以负责求和的元素数量,即列数减去 1
,即 (尺寸(A,2)-1)
-
>> bsxfun(@minus,sum(A,2),A)./(size(A,2)-1)
ans =
1.0000 1.0000 1.0000
3.5000 3.0000 2.5000
5.5000 5.0000 4.5000
关于matlab - 一行中除元素本身以外的所有元素的平均值 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276163/