Diagonal of non-square matrix
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Shuqing Qi
am 27 Apr. 2021
Kommentiert: Shuqing Qi
am 27 Apr. 2021
How can I build this matrix? All elements are zero except those three main diagonals. n is any given number.
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (2)
Bruno Luong
am 27 Apr. 2021
Bearbeitet: Bruno Luong
am 27 Apr. 2021
n = 8;
A = spdiags([2 3 4]+zeros(n,1),0:2,n,n+2);
A = full(A) % if prefered
Clayton Gotberg
am 27 Apr. 2021
Bearbeitet: Clayton Gotberg
am 27 Apr. 2021
n = 5; % Example input
diagonals = [2 3 4];
% Method 1:
matrix = zeros(n,n+2); % Preallocate for speed
extra_zeros = zeros(1,n-1);
matrix_row = [diagonals extra_zeros];
for k = 1:n
matrix(k,:) = matrix_row;
matrix_row = circshift(matrix_row,1);
end
% Method 2:
diagonal_one = [diag(repmat(diagonals(1),n,1)) zeros(n,2)];
diagonal_two = [zeros(n,1) diag(repmat(diagonals(2),n,1)) zeros(n,1)];
diagonal_three = [zeros(n,2) diag(repmat(diagonals(3),n,1))];
matrix = diagonal_one+diagonal_two+diagonal_three;
The second method is a little faster.
Siehe auch
Kategorien
Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!