在包含矩阵的对角线上是否有任何简单的命令/代码来对块子矩阵进行求和?举个例子:
A= A11 A12;A21 A22
我想得到A11+A22,其中Aij是NxK块矩阵。
谢谢。
发布于 2015-03-29 09:47:15
给定的
下面列出的代码将是一个通用代码,以实现问题中规定的目标-
start_block = bsxfun(@plus,[1:N]',[0:K-1]*D*N) %//'# Starting block indices
blks = A(bsxfun(@plus,start_block(:),[0:D-1]*(D*N*K + N)))%// Blocks in columns
out = reshape(sum(blks,2),N,K) %// Sum blks across columns and reshape into a
%// N x K array for the final output使用D = 4、N = 4和K = 3进行示例运行
A =
6 9 9 2 7 6 2 9 1 1 4 2
4 5 5 3 7 4 9 8 8 6 6 2
3 3 7 1 6 9 3 7 9 9 7 3
5 7 2 9 4 3 9 8 1 4 6 7
4 7 9 6 4 6 3 4 9 4 5 8
4 7 5 9 8 6 4 6 1 9 6 7
6 7 7 2 3 4 1 6 7 9 5 1
7 1 1 9 8 2 6 5 8 7 1 8
4 7 8 8 8 1 2 3 5 9 7 9
4 5 7 6 8 4 1 3 8 7 9 7
2 2 2 4 5 2 7 5 9 4 4 1
1 1 5 3 6 7 4 3 6 6 9 4
3 8 3 7 9 4 6 8 2 3 4 7
3 2 5 3 4 8 4 9 2 3 8 7
6 2 4 1 1 7 6 1 2 7 5 3
9 6 4 7 8 6 1 5 1 5 4 3
blks =
6 6 2 3
4 9 1 3
3 2 7 7
5 9 4 5
9 4 3 4
5 8 3 8
3 3 5 5
7 8 3 4
9 6 5 7
5 6 8 7
7 4 9 3
2 2 6 3
out =
17 20 27
17 24 26
19 16 23
23 22 13验证样本运行的输出-
>> A(1:4,1:3) + A(5:8,4:6) + A(9:12,7:9) + A(13:16,10:12)
ans =
17 20 27
17 24 26
19 16 23
23 22 13发布于 2015-03-27 17:42:22
这只是一些矩阵索引:
N=size(A,1)/2;
K=size(A,2)/2;
E=A(1:N,1:K)+A(N+1:end,K+1:end)我建议阅读有关矩阵索引和colon操作符的文档页。
https://stackoverflow.com/questions/29306737
复制相似问题