5
Angenommen, ich habe die Eingänge data = [1 2 3 4 5 6 7 8 9 10]
und num = 4
. Ich möchte diese verwenden folgendes zu erzeugen:Wie erzeuge ich die folgende Matrix und den folgenden Vektor aus den gegebenen Eingabedaten 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]
, die auf der folgenden Logik basiert:
length of data = 10
num = 4
10 - 4 = 6
i = [first 6; second 6;... num times]
o = [last 6]
Was ist der beste Weg, um dies in MATLAB automatisieren?
@Jacob: Es ist schon komisch, ich gelernt, über Matrix-Gebäudefunktionen wie dies vor relativ kurzer Zeit (eigentlich aus einer Antwort hier auf SO: http: // stackoverflow.com/questions/1000535/how-can-i-create-a-triangular-matrix-based-on-a-vector-in-matlab/1000889#1000889), und jetzt, dass ich sie kenne, finde ich * sooo * viele Orte, um sie zu benutzen. ;) – gnovice
Schön. Ich hätte etwas basierend auf circshift verwendet, aber das ist viel eleganter – Kena
nur, dass meine Daten nicht immer '1: 10' sein werden, also habe ich' o = data (:, (num + 1: end)) ; '. Ich dachte daran, mehrere for-Schleifen zu verwenden, um dasselbe zu erreichen. 'hankel' ist einfach so viel eleganter. – Lazer