Plot a function of three variables on a surface plot
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello. I have some experimental data of electric field E. The values were measured along three axes x, y and z such that: along x axis (x=0:5:50), values of Ex were measured (Assume Ex = rand(size(x)) for reference), then along y axis (y=0:5:70), values of Ey were measured (Assume Ey = rand(size(y)) here for reference), and along z axis (0:5:20), Ez was measured (Ez = rand(size(z)) assumed here). I want to plot this data in a 3D surface plot. How can I do this?
1 Kommentar
Antworten (1)
Star Strider
am 30 Mär. 2023
If all the data are vectors (that would appear to be true since ‘x’ is a vector), it would be necessary to use either the griddata or scatteredInterpolant function to create a surface from them.
.
2 Kommentare
Star Strider
am 2 Apr. 2023
Here is an example using scatteredInterpolant and random vectors —
x = randn(1,20); % Create Data Vector
y = randn(1,20); % Create Data Vector
z = randn(1,20); % Create Data Vector
xv = linspace(min(x), max(x), numel(x)); % Interpolatioon Vector
yv = linspace(min(y), max(y), numel(y)); % Interpolation Vector
[X,Y] = ndgrid(xv,yv); % Interpolation Matrices
F = scatteredInterpolant(x(:),y(:),z(:)); % Create Interpolant Function
Z = F(X,Y); % Calculate 'Z' By Interpolation
figure
surfc(X, Y, Z) % Plot Result
grid on
xlabel('X')
ylabel('Y')
zlabel('Z')
colormap(turbo) % Introduced In R2020b
colorbar
The griddata function works similarly, however has different arguments and produces a lsightly different result.
.
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!