Я разместил тот же вопрос на MATLAB central , и Билл Грин любезно предоставил ответ .
Я кратко сообщаю и расширяю его, чтобы он мог быть полезен другим.
Решение от Билла:
Вот один из способов создать такой сюжет. Предположим, у вас есть матрица точек, созданная сеткой PDE Toolbox, p, и вектором решения u. Функция ниже создаст график этого решения вдоль линии, определенной местоположениями x и y двух конечных точек. Мой пример для решения на единицу площади, и я хочу график вдоль линии (0, .5) до (1, .5). Я хочу включить 25 пунктов в сюжет. Как видите, настоящую работу выполняет TriScatteredInterp
функция ядра MATLAB.
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
Я хотел бы далее отметить, что предыдущая функция позволяет построить решение u
или его функции f(u)
, если они u
определены на узлах сетки (как это обычно происходит для приближенных решений FEM).
Если нужно сюжетные разделы функций , определенных на сетчатых центрах (например , функции grad u
), она может использовать заранее функцию , pdeprtni
которая производит узел многозначных-функцию из центра многозначных-функций .