Ich habe die gleiche Frage auf MATLAB Central gestellt , und Bill Greene hat mir freundlicherweise eine Antwort gegeben .
Ich berichte kurz und erweitere es, damit es für andere nützlich sein kann.
Lösung von Bill:
Hier ist eine Möglichkeit, ein solches Diagramm zu erstellen. Angenommen, Sie haben die vom PDE Toolbox-Mesher p erstellte Punktmatrix und einen Lösungsvektor u. Die folgende Funktion erstellt ein Diagramm dieser Lösung entlang einer Linie, die durch die x- und y-Positionen der beiden Endpunkte definiert ist. Mein Beispiel ist eine Lösung auf einem Einheitsquadrat und ich möchte ein Diagramm entlang der Linie (0, .5) bis (1, .5). Ich möchte 25 Punkte in die Handlung aufnehmen. Wie Sie sehen können, wird die eigentliche Arbeit von der TriScatteredInterp
Funktion aus Kern-MATLAB erledigt .
plotAlongLine(p, u, [0,.5], [1,.5], 25);
function plotAlongLine(p, u, xy1, xy2, numpts)
x = linspace(xy1(1),xy2(1),numpts);
y = linspace(xy1(2),xy2(2),numpts);
F = TriScatteredInterp(p(1,:)', p(2,:)', u);
uxy = F(x,y);
figure; plot(x, uxy); //REM: x is chosen here as a curvilinear coordinate
end
Ich möchte weiter darauf hinweisen, dass die vorherige Funktion es ermöglicht, die Lösung u
oder ihre Funktionen zu zeichnen f(u)
, sofern u
sie auf Netzknoten definiert sind (wie dies normalerweise bei FEM-approximierten Lösungen der Fall ist).
Wenn man Abschnitte von Funktionen zeichnen muss, die auf Netzzentren definiert sind (z. B. Funktionen von grad u
), kann sie im Voraus die Funktion verwenden, pdeprtni
die Knotenwertfunktionen aus Mittelwertfunktionen erzeugt .