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

 Réponse acceptée

Walter Roberson
Walter Roberson le 10 Avr 2011

0 votes

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

3 commentaires

Matt Fig
Matt Fig le 10 Avr 2011
I believe Walter meant:
n = floor(sqrt(2*length(V))) + 1
Chien-Chia Huang
Chien-Chia Huang le 10 Avr 2011
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?
Chien-Chia Huang
Chien-Chia Huang le 10 Avr 2011
Yup, Matt is right.
Thanks, Matt.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by