5
Supponiamo di avere gli ingressi data = [1 2 3 4 5 6 7 8 9 10]
e num = 4
. Voglio usare questi per generare la seguente:Come si genera la matrice e il vettore seguenti dai dati di input dati in MATLAB?
i = [1 2 3 4 5 6; 2 3 4 5 6 7; 3 4 5 6 7 8; 4 5 6 7 8 9]
o = [5 6 7 8 9 10]
che si basa sulla seguente logica:
length of data = 10
num = 4
10 - 4 = 6
i = [first 6; second 6;... num times]
o = [last 6]
Qual è il modo migliore per automatizzare questo in MATLAB?
@Jacob: E 'divertente, ho imparato a conoscere le funzioni di matrice-edificio come questo in tempi relativamente recenti (in realtà, da una risposta qui su SO: http: // stackoverflow.com/questions/1000535/how-can-i-create-a-triangular-matrix-based-on-a-vector-in-matlab/1000889#1000889), e ora che li conosco, continuo a trovare * sooo * molti posti per usarli. ;) – gnovice
Bello. Avrei usato qualcosa basato su circshift, ma questo è molto più elegante – Kena
solo che i miei dati non saranno sempre '1: 10', quindi ho usato' o = data (:, (num + 1: end)) ; '. Stavo pensando di utilizzare più cicli per ottenere lo stesso risultato. "hankel" è molto più elegante. – Lazer