Plot a function of three variables on a surface plot
조회 수: 54 (최근 30일)
이전 댓글 표시
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
답변 (1개)
Star Strider
2023년 3월 30일
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
Star Strider
2023년 4월 2일
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.
.
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!