Create a matrix with same diagonal elements

4 visualizaciones (últimos 30 días)
Grzegorz Lippe
Grzegorz Lippe el 27 de Nov. de 2013
Comentada: Grzegorz Lippe el 27 de Nov. de 2013
Hello World,
I have a vector
x = [x_1 x_2 x_3]
and would like to create a Matrix which looks like this:
X = [x_1 0 0
x_2 x_1 0
x_3 x_2 x_1]
Is there a loop-less way or a Matlab function to do this? The best thing I could come up with is:
x = 1:3 ;
N = length(x) ;
X = zeros(N) ;
for kk=1:N
X(kk:N+1:end) = x(kk) ;
end
X = tril(X)

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 27 de Nov. de 2013
Editada: Azzi Abdelmalek el 27 de Nov. de 2013
X=[10 20 30]
n=numel(X);
out=tril(cell2mat(arrayfun(@(x) circshift(X',[x 0]),0:n-1,'un',0)))

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 27 de Nov. de 2013
out = tril(toeplitz(x));

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by