Plot solution of pde toolbox on a line (or submanifold)
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Alessandro
 el 31 de Oct. de 2012
  
    
    
    
    
    Respondida: Lukasz
 el 7 de Mayo de 2025
            I'm using the pde toolbox to solve a certain elliptic equation in 2D.
Solution is fine, although I do need to plot it along a given line, i.e. to cut a planar slice from the 3D mesh representing the solution.
I can't figure out a way that smartly involves the toolbox functions.
Any help appreciated.
0 comentarios
Respuesta aceptada
  Bill Greene
    
 el 2 de Nov. de 2012
        Hi,
Here is one way to create such a plot. Assume you have the point matrix created by the PDE Toolbox mesher, p, and a solution vector, u. The function below will create a plot of that solution along a line defined by the x and y locations of the two end points. My example is for a solution on a unit square and I want a plot along the line (0,.5) to (1,.5). I want to include 25 points in the plot. As you can see, the real work is being done by the TriScatteredInterp function from core 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);
end
Bill
13 comentarios
  Lukasz
 el 22 de Abr. de 2025
				One more question.
How can I export any variables calculated in the function to an external file, especially the data used to create a chart?
  Torsten
      
      
 el 22 de Abr. de 2025
				
      Editada: Torsten
      
      
 el 22 de Abr. de 2025
  
			timestep = 4;
numpts = 25;
pstart = [0 0];
pend = [1 3];
[x,y,uxy] = plotAlongLine(p, u, pstart, pend, numpts, timestep);
plot(sqrt(x.^2+y.^2),uxy)
writematrix([(sqrt(x.^2+y.^2)).',uxy.'],'Results.xls')
function [x,y,uxy] = plotAlongLine(p, u, xy1, xy2, numpts, timestep)
  x = linspace(xy1(1),xy2(1),numpts);
  y = linspace(xy1(2),xy2(2),numpts);
  F = TriScatteredInterp(p(1,:)', p(2,:)', u(:,timestep));
  uxy = F(x,y);
end
Más respuestas (1)
  Lukasz
 el 7 de Mayo de 2025
        New task and I found a new problem. :(
Problem with determining the temperature on the line with endpoints at points A(0;0) and B(0.88; 5) - the left side of the polygon.
The simulation is about heat transfer.
In the simple example I asked about in previous posts, which is above, everything works.
Details of the problem are in the pdf file.
Please, I ask for your help.
Luk.
0 comentarios
Ver también
Categorías
				Más información sobre PDE Solvers en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




