Creating a Matrix from a given Vector.

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]

回答(2 个)

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 个评论

The answer is a 4*4 matrix but should be a 4*3 matrix.
Where is 4*4 in answer?
Sorry, I didn't realize you edited, but, ¿for a 1xn vector?
Corrected. Work for any vectors.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Multidimensional Arrays 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by