I have a matrix which size is mxm (square) variable and I wanna assign a mx1 matrix into the first matrix's diagonal. What kind of loop I have to write?

1 view (last 30 days)
for example;
%m=matrix's row which is variable depends on the input
a=zeros(m)
b=[mx1]
I wanna assign b matrix into the a matrix's diagonal.
  3 Comments
sermet
sermet on 19 May 2013
a=[0 0 0;0 0 0;0 0 0]
b=[1 2 3]
c=[1 0 0;0 2 0;0 0 3] I wanna create c matrix which its diagonal belongs to b
Image Analyst
Image Analyst on 19 May 2013
I was going to suggest the cyclist's third method, which he posted before your comment above. Did you try it?

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 19 May 2013
Edited: the cyclist on 19 May 2013
This is very easy, if the off-diagonal element are always zeros:
m = 5;
b = rand(m,1);
a = diag(b);
But if you want a more general way to insert b along the diagonal of any array a, then here's one way:
m = 5;
% Set up the array and vector:
a = magic(m);
b = rand(m,1);
% Insert vector into main diagonal of array
a(1:m+1:end) = b;
Another way to do the last step is:
a(logical(eye(m))) = b;

More Answers (0)

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!