# How to extract diagonal elements of multiple nxn square matrix and place them in single mat file or matrix?

8 views (last 30 days)

Show older comments

Hello,

I have 500 mat files with 10x10 double dimension. I want to extract the 10 diagonal elements from each matrix and place them in a single matrix which will be 500x10 (500 rows and 10 columns) each row consists of diagonal elements of one matrix. How can I make a single variable with all the diagonal elements?

Thanks

##### 6 Comments

Stephen23
on 28 Sep 2018

### Accepted Answer

ytzhak goussha
on 27 Sep 2018

Hope this helps

step1:creat a nXnXm with random elements for the example:

%set dimensions of matrix

size_of_matrix=10;

number_of_matricides=500;

mat_input=randi(30,size_of_matrix,size_of_matrix,number_of_matricides);

step2: initialize an output matrix with nXm dimensions

mat_output=zeros(number_of_matricides,size_of_matrix);

step3: extract a diagonal from each matrix and place them in the output matrix

for i=1:number_of_matricides

mat_output(i,:)=diag(mat_input(:,:,i));

end

Alternatively, though not recommended, you can simply concatenate:

%initialize an empty matrix

mat_output=[];

for i=1:number_of_matricides

mat_output=[mat_output;diag(mat_input(:,:,i))'];

end

##### 5 Comments

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!