Wie erstelle ich einen Vektor wie folgt aus:einen Vektor in MATLAB mit einem Muster erstellen
a = [a_1;a_2;...,a_n];
aNew = [a;a.^2;a.^3;...;a.^T].
Ist es möglich, aufs Neue, ohne eine Schleife zu schaffen?
Wie erstelle ich einen Vektor wie folgt aus:einen Vektor in MATLAB mit einem Muster erstellen
a = [a_1;a_2;...,a_n];
aNew = [a;a.^2;a.^3;...;a.^T].
Ist es möglich, aufs Neue, ohne eine Schleife zu schaffen?
Die Idee ist meshgrid
zu verwenden zwei Arrays der Größe n x T
zu erstellen:
[n_mesh, t_mesh] = meshgrid(a, 1:T);
Nun n_mesh ist ein Array, wobei jede Reihe ein Duplikat von a
ist, und t_mesh ist ein Array, wobei jede Spalte 1:T
ist.
Jetzt können Sie ein Element weisen Betrieb auf sie verwenden, zu schaffen, was Sie brauchen:
aNew = n_mesh .^ t_mesh;
So möchten Sie verschiedene Potenzen von a, die alle in einen Vektor aufgereiht? Ich würde ein Array erstellen, wobei jede Spalte des Arrays eine andere Potenz von a hat. Dann zeichne es in einen Vektor. So etwas wie dies ...
aNew = bsxfun(@power,a,1:T);
aNew = aNew(:);
Das tut, was Sie wollen, in einer einfachen und effizienten Art und Weise. bsxfun ist eine effizientere Methode zum Schreiben der Erweiterung als andere Methoden, wie z. B. repmat, ndgrid und meshgrid.
Der Code, den ich schrieb, nimmt an, dass a ein Spaltenvektor ist, wie Sie es konstruiert haben.
Cool! Ich wusste nicht, dass du das kannst! –
Danke Hackschnitzel, auch Frohes Neues Jahr;) – user558213
Season's Greetings - Das ist sehr schön. Ich danke Ihnen für das Teilen. –
Danke Nathan, ziemlich coole Lösung. Greets und Happy New Year – user558213