Piecewise 3D plotting

Hi, I need to do a 3D plot of the following functions using piecewise:
y1 = -0.00278018473212*x.^3 + 0.0764514697018*x.^2 + -0.481036946424*x + 4.37885609332;% both need to be in the interval of 4 < x < 14 as well
y2 = 0.0000772436429838*x^3+0.0146583319491*x^2-0.184551271403*x+4.99872818128;% both need to be in the interval of 4 < x < 14 as well
y3 = 4.5 %interval 2.5 < x < 4
y5 = 5.5 %interval 14 < x < 14.5
y6 = 5.0 %interval 14 < x < 14.5
Z = piecewise(2.5 < x < 4 ,y3,4 < x < 14,y2,14 < x < 14.5, y5);
Error using surf
Z must be a matrix, not a scalar or vector.
How can I:
1) plot the function correctly
and
2) add 'y1' into the piecewise as it occupies the same interval as y2 (4<x<14)?
Thanks in advance.

5 Commenti

Matt J
Matt J il 5 Set 2023
Modificato: Matt J il 5 Set 2023
Surface plots have 2 independent variables, but you appear to have only one, namely x. So, in what way is it a 3D plot?
Moisés Abel
Moisés Abel il 5 Set 2023
I just edited it for it to look clearer, the other plot was supposed to be 2D, but I now need to make a 3D plot
Matt J
Matt J il 5 Set 2023
Modificato: Matt J il 5 Set 2023
It's not clearer because Z still depends on only one independent variable, not two.
As a preliminary remark, though, ndgrid and surf are not doing anything meaningful here. Z is a symbolic variable, which surf() doesn't know how to deal with.
Moisés Abel
Moisés Abel il 5 Set 2023
So what would Z need to be in this case?
Matt J
Matt J il 5 Set 2023
Modificato: Matt J il 5 Set 2023
I see that you have edited your post a second time, but the revisions you've made are irrelevant to the questions I asked you before.You will have no hope of clarifying the post until you answer them.
So once again: Are you trying to make a surface plot? In a surface plot, Z is a function of two variables Z(x,y). But in your post, Z depends on only one one variable Z(x). So, in what way is Z() to be seen as a function of two variables?

Accedi per commentare.

Risposte (1)

Matt J
Matt J il 5 Set 2023
Modificato: Matt J il 5 Set 2023
Perhaps this is what you meant:
syms Z(x,y)
y1 = -0.00278018473212*x.^3 + 0.0764514697018*x.^2 + -0.481036946424*x + 4.37885609332;% both need to be in the interval of 4 < x < 14 as well
y2 = 0.0000772436429838*x^3+0.0146583319491*x^2-0.184551271403*x+4.99872818128;% both need to be in the interval of 4 < x < 14 as well
Z1(x,y) = piecewise( 2.5 < x & x < 4 , 4.5,...
4 < x & x < 14, y1,...
14 < x & x < 14.5, 5.5 );
Z2(x,y) = piecewise( 2.5 < x & x < 4 , 4.5,...
4 < x & x < 14, y2,...
14 < x & x < 14.5, 5.5 );
fsurf(Z1); hold on; fsurf(Z2); hold off
xlim([2.5 14.5])
ylim([2.5 14.5])

1 Commento

Moisés Abel
Moisés Abel il 5 Set 2023
Not quite, maybe I should rewrite my code and rephrase my post so that it is clearer what I want to do

Accedi per commentare.

Categorie

Scopri di più su Mathematics in Centro assistenza e File Exchange

Prodotti

Release

R2022b

Richiesto:

il 5 Set 2023

Modificato:

il 5 Set 2023

Community Treasure Hunt

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

Start Hunting!

Translated by