Wie erzeuge ich eine Funktion von zwei Variablen, ohne eine Schleife zu benutzen?

7

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.

%Vor%     
Aamir 25.12.2009, 21:19
quelle

3 Antworten

12

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.

%Vor%

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() .

    
Mikhail 25.12.2009, 22:23
quelle
6

es besteht keine Notwendigkeit für meshgrid ; benutze einfach:

%Vor%     
shabbychef 28.12.2009 20:10
quelle
2

Diese könnten hilfreich sein:
Ссылка

Ссылка

Viel Glück.

    
Royi 26.12.2009 09:40
quelle

Tags und Links