3D mesh plot
12 ビュー (過去 30 日間)
古いコメントを表示
Hello, I wrote this code in order to get a 3D mesh plot based on those x,y,t values. is there any way to confirm that the plot would look like this? or i need to just trust Matlab with it? (added the plot)
%given data
x = [0 10 20 30 0 10 20 0 10 20 30];
y = [0 0 0 0 15 15 15 15 30 30 30 30];
t = [20 22 25 23 22 27 30 25 19 20 18 22];
%grid for x and y
%use unique so each value will be used once
[X,Y] = meshgrid(unique(x), unique(y));
%turning t into the same size as X and Y
T = reshape(t,length(unique(y)),length(unique(x)));
%3D plot for the values
figure;
mesh(X,Y,T);
xlabel('X');
ylabel('Y');
zlabel('T');
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1308645/image.png)
0 件のコメント
回答 (1 件)
Star Strider
2023 年 2 月 27 日
The ‘x’ vector is missing a ‘30’ value (supplied here).
I get a different result when I plot those data —
x = [0 10 20 30 0 10 20 30 0 10 20 30];
y = [0 0 0 0 15 15 15 15 30 30 30 30];
t = [20 22 25 23 22 27 30 25 19 20 18 22];
% Q = [size(x); size(y); size(t)]
xv = linspace(min(x), max(x), numel(x));
yv = linspace(min(y), max(y), numel(y));
[X,Y] = meshgrid(xv,yv);
F = scatteredInterpolant(x(:),y(:),t(:)); % Use 'scatteredInterpolant'
T = F(X,Y);
figure
surfc(X, Y, T)
colormap(turbo)
colorbar
xlabel('X')
ylabel('Y')
zlabel('T')
[Uy,yix] = unique(y);
Rows = mean(diff(yix));
X = reshape(x,Rows,[]); % Using 'reshape'
Y = reshape(y,Rows,[]);
T = reshape(t,Rows,[]);
figure
surfc(X, Y, T) % 'surfc'
colormap(turbo)
colorbar
xlabel('X')
ylabel('Y')
zlabel('T')
figure
meshc(X, Y, T) % 'meshc'
colormap(turbo)
colorbar
xlabel('X')
ylabel('Y')
zlabel('T')
Experiment to get different results.
.
0 件のコメント
参考
カテゴリ
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!