MATLAB: 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

matrix

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.

Best Answer

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;