How to make a matrix from trace of the original matrix ?
6 次查看(过去 30 天)
显示 更早的评论
When I have a square matrix A like the one in the picture, I want to create a matrix B which is the sum of the kth diagonal component to the right below itself, is there any easy way to write this?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1116955/image.png)
Currently, I am calculating in the form of creating reduced matrices and getting the jth diagonal component of each reduced matrix, but I feel it is quite slow and inefficient.
A = reshape(1:9,3,3);
B = zeros(3,3);
for i = 1:3
A_partial = A(i:end,i:end);
for j = 1:3-i+1
B(i,i+j-1) = sum(diag(A_partial,j-1));
B(i+j-1,i) = sum(diag(A_partial,-1*(j-1)));
end
end
A
B
0 个评论
采纳的回答
Dyuman Joshi
2022-9-5
编辑:Dyuman Joshi
2022-9-5
Building on your approach - Breaking the matrix into smaller matrices and assigning the diagonal sums to the corressponding elements.
y=spiral(3)
mat=y;
for i=1:size(y,1)-1
for j=1:size(y,2)-1
mat(i,j)=sum(diag(y(i:end,j:end)));
end
end
mat
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!