Azzera filtri
Azzera filtri

creating a matrix by a vector in the following condition

3 visualizzazioni (ultimi 30 giorni)
Imagine that there is a vector, such as:
v=[a1; a2; a3; a4; a5; a1; a2; a3; a4; a5; a1; a2; a3; a4; a5; a1; a2; a3; a4; a5; a1; a2; a3; a4; a5;]
I need to rearrange this vector and transfer it to a matrix such that the elements are positioned like the following matrix:
matrix=
a1 a2 a3
a2 a1 a2
a3 a2 a1
a4 a3 a2
a5 a4 a3
a1 a2 a3
a2 a1 a2
a3 a2 a1
a4 a3 a2
a5 a4 a3
I need a for loop that creates this matrix. It is like each column starts with the second element of the previous column(e.g.: a2 in column 2) and ends at the one to the last element of the previous column(e.g: a3 at column 3). Also, it happens for each block (a1 to a5).
I could not explain it very well but hopefully, the example makes it clear.
Thanks in advance for your help.
  2 Commenti
James Tursa
James Tursa il 23 Feb 2018
Modificato: James Tursa il 23 Feb 2018
No, this is not clear. For one, your 3rd column does not seem to satisfy the "starts with the second element of the previous column" rule. And I can't figure out the rule for filling in the in-between elements either. Why do you have to use a for-loop?
Bahar
Bahar il 23 Feb 2018
Ok forget what I explained, please just look at the example. the first block of the matrix is:
a1 a2 a3
a2 a1 a2
a3 a2 a1
a4 a3 a2
a5 a4 a3
And the second block is the same which adds to the first one.
a1 a2 a3
a2 a1 a2
a3 a2 a1
a4 a3 a2
a5 a4 a3
a1 a2 a3
a2 a1 a2
a3 a2 a1
a4 a3 a2
a5 a4 a3
And it needs to create by the above vector.

Accedi per commentare.

Risposte (1)

SRT HellKitty
SRT HellKitty il 23 Feb 2018
If each column is always going to be the same length and 'v' is always going to be 1-5 repeated this should work.
matrix = [[v(1:10)], [v(2); v(1:9)], [v(3); v(2); v(1:8)]]

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by