Surf from a numerical array

3 visualizaciones (últimos 30 días)
Mat Hunt
Mat Hunt el 26 de Feb. de 2024
Movida: Voss el 26 de Feb. de 2024
Suppose I solve a PDE and obtain a solution in 2D say . If I do surf(u) I get a picture of the whole thing. Can I change the values of the axis to correspond to the actual values of interest? Currently the axis values just represent the number of data points, so I want to change that to actual values of interest.

Respuesta aceptada

Voss
Voss el 26 de Feb. de 2024
Yes. You can use the xlim and ylim functions to set the axes limits to the actual region of interest.
Example:
% some matrix
z = peaks(100);
% the whole thing
figure();
surf(z)
xlabel('x')
ylabel('y')
zlabel('z')
% the actual region of interest
figure();
surf(z)
xlabel('x')
ylabel('y')
zlabel('z')
xlim([30 75])
ylim([50 90])
  7 comentarios
Voss
Voss el 26 de Feb. de 2024
Not necessarily. In surf(X,Y,Z) X and Y can be vectors or matrices.
meshgrid would be useful for constructing matrix X and Y from vector X and Y, but you can use the vectors directly in surf.
Voss
Voss el 26 de Feb. de 2024
Movida: Voss el 26 de Feb. de 2024
"Currently the axis values just represent the number of data points, so I want to change that to actual values of interest."
Specify the values of interest in the call to surf.
Example:
% 10 t values ranging from 0.01 to 0.02
t = linspace(0.01,0.02,10)
t = 1×10
0.0100 0.0111 0.0122 0.0133 0.0144 0.0156 0.0167 0.0178 0.0189 0.0200
% 15 x values ranging from 100 to 200
x = linspace(100,200,15)
x = 1×15
100.0000 107.1429 114.2857 121.4286 128.5714 135.7143 142.8571 150.0000 157.1429 164.2857 171.4286 178.5714 185.7143 192.8571 200.0000
% 15-by-10 matrix u
u = exp(t.*x.')
u = 15×10
2.7183 3.0377 3.3947 3.7937 4.2395 4.7377 5.2945 5.9167 6.6120 7.3891 2.9195 3.2886 3.7044 4.1727 4.7003 5.2945 5.9638 6.7178 7.5671 8.5238 3.1357 3.5603 4.0423 4.5897 5.2111 5.9167 6.7178 7.6274 8.6601 9.8327 3.3679 3.8544 4.4111 5.0483 5.7775 6.6120 7.5671 8.6601 9.9111 11.3427 3.6173 4.1727 4.8135 5.5527 6.4054 7.3891 8.5238 9.8327 11.3427 13.0845 3.8851 4.5174 5.2526 6.1075 7.1016 8.2574 9.6014 11.1640 12.9811 15.0938 4.1727 4.8905 5.7318 6.7178 7.8734 9.2278 10.8152 12.6756 14.8561 17.4117 4.4817 5.2945 6.2547 7.3891 8.7291 10.3123 12.1825 14.3919 17.0020 20.0855 4.8135 5.7318 6.8253 8.1274 9.6779 11.5241 13.7226 16.3406 19.4579 23.1700 5.1699 6.2053 7.4479 8.9395 10.7297 12.8785 15.4575 18.5531 22.2685 26.7281
% plot the surface
surf(t,x,u)
xlabel('t')
ylabel('x')
zlabel('u')

Iniciar sesión para comentar.

Más respuestas (1)

Sufiyan
Sufiyan el 26 de Feb. de 2024
I believe this is similar to changing the limits on the axis scale to different values or rescaling the axis.
  1 comentario
Mat Hunt
Mat Hunt el 26 de Feb. de 2024
This isn't the problem I have.

Iniciar sesión para comentar.

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by