plot surface using different x,y vector increment and got different graph

1 visualizzazione (ultimi 30 giorni)
Hi, I using follow code to generate a surface, got fig 1
=========================================================
clear;
x=0:0.01:1;
y=0:0.01:1;
[x1,y1]=meshgrid(x,y);
z1=-1.448-0.477*x1-0.4757*y1+0.1473*x1.^2-0.1952*x1*y1+0.1334*y1.^2;
surf(x1,y1,z1,'FaceColor','red','LineStyle','none');
hold on;
=========================================================
fig 1
and I change x and y vector step from 0.01 to 0.1, got fig 2
=========================================================
clear;
x=0:0.1:1;
y=0:0.1:1;
[x1,y1]=meshgrid(x,y);
z1=-1.448-0.477*x1-0.4757*y1+0.1473*x1.^2-0.1952*x1*y1+0.1334*y1.^2;
surf(x1,y1,z1,'FaceColor','red','LineStyle','none');
hold on;
=========================================================
fig 2
My question is why Z-index is not same range. fig1 Z-index range is [-9,-8] and fig 2 Z-index range is [-3,-2]
which plot is correct ? and what causes this problem? How do I modify the code to produce the same plot?
Thanks....

Risposta accettata

Théophane Dimier
Théophane Dimier il 26 Nov 2020
Hi
In your formula, there is an operation that is not element wise:
z1=-1.448-0.477*x1-0.4757*y1+0.1473*x1.^2-0.1952*x1*y1+0.1334*y1.^2;
If you correct it to
z1=-1.448-0.477*x1-0.4757*y1+0.1473*x1.^2-0.1952*x1.*y1+0.1334*y1.^2;
The two codes give the same results

Più risposte (1)

Stephan
Stephan il 26 Nov 2020
Modificato: Stephan il 26 Nov 2020
You did not multiply elementwise, also you can shorten your code a little bit:
fun = @(x,y) -1.448-0.477*x-0.4757*y+0.1473*x.^2-0.1952*x.*y+0.1334*y.^2;
xl=0:0.1:1;
yl=0:0.1:1;
[x1,y1]=meshgrid(xl,yl);
z1=fun(x1,y1);
figure
surf(xl,yl,z1,'FaceColor','red','LineStyle','none');
xs=0:0.01:1;
ys=0:0.01:1;
[x2,y2]=meshgrid(xs,ys);
z2=fun(x2,y2);
figure
surf(xs,ys,z2,'FaceColor','red','LineStyle','none');

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by