Angenommen, ich habe eine Funktion y (t, x) = exp (-t) * sin (x)
In Matlab definiere ich
%Vor% Nun, wie definiere ich die Matrix y ohne eine Schleife zu verwenden , so dass jedes Element y (i, j) den Wert der gewünschten Funktion y at (t(i), x(j))
enthält? Unten ist, wie ich es mit einer for-Schleife gemacht habe.
Ihre Eingabevektoren x
ist 1xN
und t
ist 1xM
, Ausgabematrix y
ist MxN
. Um den Code zu vektorisieren, müssen sowohl x
als auch t
die gleiche Dimension wie y
haben.
Ihr Beispiel ist ein einfacher 2D-Fall. Funktion meshgrid()
funktioniert auch 3D. Manchmal kann man die Schleife nicht umgehen, in solchen Fällen, wenn Ihre Schleife entweder 1: N oder 1: M gehen kann, wählen Sie die kürzeste. Eine weitere Funktion, die ich zur Vektorvorbereitung für vektorisierte Gleichungen (Vektor x Matrixmultiplikation) verwende, ist diag()
.
es besteht keine Notwendigkeit für meshgrid
; benutze einfach:
Tags und Links matlab matrix vectorization