Is there a way to plot everything together using the surf command in matlab?

2 次查看(过去 30 天)
Is there a way to plot everything together using the surf command in matlab? right now I can only one z value at a time (i.e.
surf(R,Rc,N_diesel(:,:,1)); , surf(R,Rc,N_diesel(:,:,2));, surf(R,Rc,N_diesel(:,:,3)); ... and so forth)
Can someone point me in the right direction?
My Current Code:
--------------------------------------------------------------------------------------------
T = linspace(250,1000,16);
T_size = length(T);
Rc = linspace(1.001,4.001,7);
rc_size = length(Rc);
R = linspace(12,24,25);
r_size = length(R);
N_diesel = zeros(r_size,rc_size,T_size);
for ki=1:1:T_size
for j=1:1:rc_size
for i=1:1:r_size
k = get_k_air(T(ki));
Calc_Diesel = efficiency(R(i),Rc(j),k);
N_diesel(i,j,ki) = Calc_Diesel;
end
end
end
[Rc,R] = meshgrid(Rc,R);
surf(R,Rc,N_diesel(:,:,1));
x = array2table(round(N_diesel(:,:,1),3,'significant'));
function k = get_k_air(T1)
keys = linspace(250,1000,16);
values = [1.401,1.4,1.398,1.395,1.391,1.387,1.381,1.376,1.37,1.364,1.359,1.354,1.349,1.344,1.34,1.336];
lookup_table = containers.Map(keys,values);
k = lookup_table(T1);
end
function Calc_Diesel = efficiency(R,Rc,k)
N1 = 1/(R.^(k - 1));
N2 = (Rc.^k - 1)/(k.*(Rc - 1));
Calc_Diesel = 1 - (N1*N2);
end

采纳的回答

Star Strider
Star Strider 2019-4-14
Use the hold function, and plot the surfaces in a loop.
Try this:
figure
hold all
for k1 = 1:size(N_diesel,3)
surf(R,Rc,N_diesel(:,:,k1));
x{k1} = array2table(round(N_diesel(:,:,k1),3,'significant'));
end
hold off
view(30,30)
grid on
Full context:
T = linspace(250,1000,16);
T_size = length(T);
Rc = linspace(1.001,4.001,7);
rc_size = length(Rc);
R = linspace(12,24,25);
r_size = length(R);
N_diesel = zeros(r_size,rc_size,T_size);
for ki=1:1:T_size
for j=1:1:rc_size
for i=1:1:r_size
k = get_k_air(T(ki));
Calc_Diesel = efficiency(R(i),Rc(j),k);
N_diesel(i,j,ki) = Calc_Diesel;
end
end
end
[Rc,R] = meshgrid(Rc,R);
figure
hold all
for k1 = 1:size(N_diesel,3)
surf(R,Rc,N_diesel(:,:,k1));
x{k1} = array2table(round(N_diesel(:,:,k1),3,'significant'));
end
hold off
view(30,30)
grid on
function k = get_k_air(T1)
keys = linspace(250,1000,16);
values = [1.401,1.4,1.398,1.395,1.391,1.387,1.381,1.376,1.37,1.364,1.359,1.354,1.349,1.344,1.34,1.336];
lookup_table = containers.Map(keys,values);
k = lookup_table(T1);
end
function Calc_Diesel = efficiency(R,Rc,k)
N1 = 1/(R.^(k - 1));
N2 = (Rc.^k - 1)/(k.*(Rc - 1));
Calc_Diesel = 1 - (N1*N2);
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Timing and presenting 2D and 3D stimuli 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by