how to put an array into a matrix

Hi there!
the function "triu(X,1)" returns the upper trangular part of the matrix X. I now have an array of size 1-by-(0.5*n*(n-1)), exactly the number of elements in the upper triangular. How can I, without using any loop, put this array into a n-by-n matrix so that this matrix is what triu(X,1) returns?
Thanks. Lianovich

 采纳的回答

n = floor(sqrt(2*length(V)));
M = zeros(n);
M(logical(triu(ones(n),1))) = V;

3 个评论

I believe Walter meant:
n = floor(sqrt(2*length(V))) + 1
Thanks Walter.
But when I tried to put [1 2 3] into a 3-by-3 square matrix, the error message occured:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> arraytomatrix at 9
M(logical(triu(ones(n),1))) = V;
Guess I must have mistaken what you meant.
What should the V be?
Yup, Matt is right.
Thanks, Matt.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by