Creating a Matrix from a given Vector.
Show older comments
Hello, I want to make a matrix with the next features, given a vector, the columns of the matrix must be: In the first column, the vector and the other elements of the column zero, then for the next column, 0 followed by the vector and then the others elements zeros, and so on, on the last column, the final elements of it must ve the vector, here is an example:
h=[1, -0.5]
The matrix must be:
[1 , 0 , 0; -0.5, 1 , 0; 0 , -0.5, 1; 0 ,0 , -0.5]
Answers (2)
Ahmet Cecen
on 22 May 2016
0 votes
Check "diag" function.
Andrei Bobrov
on 22 May 2016
Edited: Andrei Bobrov
on 23 May 2016
h=[1, -0.5];
m = 3; % m - number of columns in out - matrix
out = full(spdiags(ones(m,1)*fliplr(h(:)'),[-1 0],m + numel(h) - 1,m));
or
out = toeplitz([h(:);zeros(m-1,1)],[h(1);zeros(m-1,1)]);
or
n = numel(h);
m1 = m + n - 1;
out = zeros(m1,m);
out(bsxfun(@plus,(1:n)',(0:m-1)*(m1+1))) = 1;
out(out>0) = h(:)*ones(1,m);
4 Comments
Carlos Martínez
on 22 May 2016
Andrei Bobrov
on 22 May 2016
Edited: Andrei Bobrov
on 22 May 2016
Where is 4*4 in answer?
Carlos Martínez
on 23 May 2016
Edited: Carlos Martínez
on 23 May 2016
Andrei Bobrov
on 23 May 2016
Corrected. Work for any vectors.
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!