[MatLab] Aggiungere righe ad una matrice

msole891
Ciao a tutti.
Sono una neofita di MatLab e vorrei chiedere aiuto a proposito di un quesito che mi si è posto durante la compilazione di uno script.
Ho una matrice del seguente tipo (la semplifico e metto numeri semplici, perché in realtà la matrice è molto grande):

1 2 3 10
4 5 6 10
7 8 9 10
1 2 3 20
4 5 6 20
7 8 9 20
1 2 3 30
4 5 6 30
7 8 9 30

Quello che vorrei fare è aggiungere una riga di zeri all'inizio di ogni sequenza, cioè:

0 0 0 0
1 2 3 10
4 5 6 10
7 8 9 10
0 0 0 0
1 2 3 20
4 5 6 20
7 8 9 20
0 0 0 0
1 2 3 30
4 5 6 30
7 8 9 30

Come è possibile fare questa operazione?
Spero di essere stata chiara e grazie a chi mi può aiutare.

Risposte
apatriarca
Il metodo più semplice che mi viene in mente è quella di fare un reshape per trasformare la matrice (trasposta per comodità) in modo che ogni sequenza sia una matrice a parte, aggiungere la riga (la colonna visto che la matrice è trasposta) e poi fare nuovamente un reshape (e quindi fare nuovamente la trasposta). In codice:
A = [1 2 3 10; 4 5 6 10; 7 8 9 10; 1 2 3 20; 4 5 6 20; 7 8 9 20; 1 2 3 30; 4 5 6 30; 7 8 9 30];
B = reshape(A', [4, 3, 3]);
C = [zeros(4,1,3) B];
D = reshape(C, [4, 12])';

msole891
Grazie! :smt023
L'ho applicato al mio script ed è perfetto!
Io stavo applicando un ciclo for, ma volevo evitarlo dato che ne stavo usando troppi annidati.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.