How do I create a 3 dimensional response surface plot from X Y Z points ?

Hi all,
I am struggling a bit here, and hope somebody could help. I have a set of X Y and Z points and Z is not found by any function of X and Y. In other words, I have independent X Y and Z values and these values are;
X Y Z
288 2.79 7.55
318 4.64 14.28
127 2.31 8.31
132 7.16 17.27
264 2.31 4.32
200 2.60 6.74
268 3.06 15.12
I need to create a response surface plot (contour plot) from these values. I would be so glad and thankful if somebody could help with with that. I am sorry if question is not very clear. If not, I can ask in detail. In sort, I have eight X Y Z independent data and want to create a response surface.
Best Regards,
Ferdi

3 commentaires

To create a response surface plot, you have to provide Z as a matrix.
Specifically, if two vector arguments X & Y defined such that length(X) = n and length(Y) = m then, size(Z) should be [m,n]. In order to plot the vertices of the surface patches as the triples (X(j), Y(i), Z(i,j)).
You have provided X,Y & Z as vector and if want 3d plot for that you can use
plot3(X,Y,Z)
but I believe that's not what you want.
Question: What kind of plot are you expecting? if you can provide hand drawing or pictures that would be very helpful, right now it's unclear the kind of plot you are expecting with this data.
Hi Shubham,
First of all, thank you for trying to help me. Let me upload a couple of figures to clarify what I want. Since I do not know matlab deeply, I am not sure whether it is something I would be done
Here is what exactl what I want and I have done t in minitab program. The problem in here is that there is no scale bar and it is not colorful (red blue yellow to show critical points). That is why I am trying to solve this problem via matlab

Connectez-vous pour commenter.

 Réponse acceptée

How about using an interpolation? The following is a simple example:
% Apply cubic interpolation
[xGrid,yGrid] = meshgrid(linspace(min(X),max(X)),linspace(min(Y),max(Y)));
zGrid = griddata(X(:),Y(:),Z(:),xGrid(:),yGrid(:),'cubic');
zGrid = reshape(zGrid,size(xGrid));
% Visualize the result
figure
contour(xGrid,yGrid,zGrid,'ShowText','on')
hold on
scatter(X,Y,'ro')
grid on
colorbar
contour.png

5 commentaires

Hi Akira,
First, thank you for helping but I need a response surface plot and let me upload some pictures to clarify what I want. Maybe it would be easier to understand for you.
Thanks
Hi ferdi-san,
OK, it's a piece of cake.
Please use surf function (and jet colormap)
figure
surf(xGrid,yGrid,zGrid)
colormap(jet)
colorbar
surf.png
Hi Akira, It looks really nice and fancy but since I am not good at matlab that much, could you please write the whole code that I can use ? My data is in the question. I would be so glad If you could write that.
Best regards
Please try the following:
D = [288 2.79 7.55;
318 4.64 14.28;
127 2.31 8.31;
132 7.16 17.27;
264 2.31 4.32;
200 2.60 6.74;
268 3.06 15.12];
X = D(:,1);
Y = D(:,2);
Z = D(:,3);
% Create 100x100 grid mesh (x,y) points
[xGrid,yGrid] = meshgrid(linspace(min(X),max(X)),linspace(min(Y),max(Y)));
% Interpolation
zGrid = griddata(X(:),Y(:),Z(:),xGrid(:),yGrid(:),'cubic');
zGrid = reshape(zGrid,size(xGrid));
% Fig.1 Contour plot with original data points
figure
contour(xGrid,yGrid,zGrid,'ShowText','on')
hold on
scatter(X,Y,'ro')
grid on
colorbar
% Fig.2 Surf plot
figure
surf(xGrid,yGrid,zGrid)
colormap(jet)
colorbar
Thank you very much Akira, it worked :)

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by