How can I store the whole diagonal and not only the first element (For loop)

4 次查看(过去 30 天)
% Part 3.1: Diagonal
%A
rng('default')
r2 = randi(100,3,3); % Creating a 3x3 matrix, with random values from 1 to 100
%B
d = diag(r2) % Obtain the diagonal elements
%C
Metod1 = d(2,1) % Using two parameters (row 2, column 1)
Metod2 = d(3) % Using one parametr (3rd element)
%D
for K = 1 : size(d,1)
d(K,K)
end
I have a problem in storing the diagonal values of the Matrix. It somehow only stores the first entry of the diagonal, where instead it should store 3 entries in total. How can I change the for loop so it also stores the rest of the entries?
Also I get this error message when using the for loop:
"Index in position 2 exceeds array bounds. Index must not exceed 1"
What does it mean and how can I fix this?

采纳的回答

VBBV
VBBV 2022-5-8
% Part 3.1: Diagonal
%A
rng('default')
r2 = randi(100,3,3); % Creating a 3x3 matrix, with random values from 1 to 100
%B
d = diag(r2) % Obtain the diagonal elements
d = 3×1
82 64 96
%C
Metod1 = d(2,1) % Using two parameters (row 2, column 1)
Metod1 = 64
Metod2 = d(3) % Using one parametr (3rd element)
Metod2 = 96
%D
for K = 1 : size(d,1)
D(K,K) = d(K); % d matrix has only 3 rows , 1 col
end
D % declare/assign a new matrix which stores all elements of d into D diagonally.
D = 3×3
82 0 0 0 64 0 0 0 96
  2 个评论
Jonas Morgner
Jonas Morgner 2022-5-8
Awesome Thank you very much! Unfortunately, I forgot to add that I need to store it in a 1x3 or 3x1 vector. How would the code differ if I want to store it in this specific new vector?

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by