Creating 3d surf from 2d map

14 次查看(过去 30 天)
I have plot of some data(engine charactertics), which is basically few matrixies with points of coordinates x,y plotted together.
I want to create a 3-D countour plot or surf where the Z-axis will be efficiency in % from 86 to 96 ant the X and Y axis will be the same as on the picture. I know that i can create double variable where each field will be havving number of percentages but it will be hard to map this huge variable by hand. Are there any ways to just turn this plot to 3D, so each contour will be on higher level?

采纳的回答

Star Strider
Star Strider 2023-6-26
It would help to have the data.
That aside, the plot would go something like this (I got tired of all that typing, so there are just three levels) —
x = linspace(0, 6E+3, 250).';
eff86 = [2E+3*cos(2*pi*x/max(x))+3E+3 1E+2*sin(2*pi*x/max(x))+1E+2];
eff90 = [1.750E+3*cos(2*pi*x/max(x))+3E+3 0.75E+2*sin(2*pi*x/max(x))+1E+2];
eff94 = [1.50E+3*cos(2*pi*x/max(x))+3E+3 0.5E+2*sin(2*pi*x/max(x))+1E+2];
% eff95 = 1.75E+3*[cos(2*pi*x/max(x)) sin(2*pi*x/max(x))];
% eff96 = 1.50E+3*[cos(2*pi*x/max(x)) sin(2*pi*x/max(x))];
figure
plot(eff86(:,1), eff86(:,2))
hold on
plot(eff90(:,1), eff90(:,2))
plot(eff94(:,1), eff94(:,2))
% plot(eff95(:,1), eff86(:,2))
% plot(eff96(:,1), eff86(:,2))
hold off
grid
xlabel('Motor Speed (rpm]')
ylabel('Torque [Nm]')
figure
surf([eff86(:,1) eff90(:,1) eff94(:,1)], [eff86(:,2) eff90(:,2) eff94(:,2)], (ones(numel(x),3).*[86 90 94]))
xlabel('Motor Speed (rpm]')
ylabel('Torque [Nm]')
zlabel('Efficiency [%]')
colormap(summer(2))
colorbar
Make appropriate changes to get the result you want.
.
  2 个评论
Michal
Michal 2023-6-26
thank, need to update the order of the points in my data because the spae is strange but it wokrs just as i want it

请先登录,再进行评论。

更多回答(1 个)

Joe Vinciguerra
Joe Vinciguerra 2023-6-26
It's not hard to map a constant to a new column. Just do this:
eff86(:,3) = 0.86;
eff90(:,3) = 0.90;
% ... etc.
Then plot in 3D like this:
plot3(eff86(:,1), eff86(:,2), eff86(:,3))
plot3(eff90(:,1), eff90(:,2), eff90(:,3))
% ... etc.
The contour3 function is also an option.
  2 个评论
Michal
Michal 2023-6-26
Yeah, the plot3 function works fine thank for that, but when trying to contour3 it creates an error that Z axis should be at least 2x2 matrix.
Additionally, I would also like to try some filled 3d plot similar to this cearted from double variable

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 2-D and 3-D Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by