怎样使用matlab绘制三维图形,多个波峰与波谷

Python021

怎样使用matlab绘制三维图形,多个波峰与波谷,第1张

假设你的数据为

X=[1 2 3 4 5 6 7 8]%当然你的数据可能很复杂

Y=[2 3 4 5 6 7 8 9]

Z = 2123680 150 252 392 576

%我随意取的满足Z=X.^2*Y,当然你的Z不是很有规律,或者有你不知!

即有(x,y,z)共八组点,你想画出曲面图z=f(x,y)

可是你用mesh画网格图必须是对于X Y交叉的所有Z值都得已知,才可以画出!

>>[xx,yy]=meshgrid(X,Y)

xx =

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

yy =

2 2 2 2 2 2 2 2

3 3 3 3 3 3 3 3

4 4 4 4 4 4 4 4

5 5 5 5 5 5 5 5

6 6 6 6 6 6 6 6

7 7 7 7 7 7 7 7

8 8 8 8 8 8 8 8

9 9 9 9 9 9 9 9

即你应该知道所有的Z值,而不仅仅是(x,y)=(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,9)点处对应的z值,只有这样才能画出你的曲面图

即想方法测出其他点的z值,只有获得了这些以后,才可以用插值函数interp2进行插值获得更精细的曲面图

即缩小区域及间隔

[x0,y0]=meshgrid(1:0.1:10,2:0.1:10)%当然你可以自己取范围与间隔

z0=interp2(X,Y,ZZ,x0,y0)%X,Y为你自己的数据,ZZ为我告诉你要获得的length(Y)行length(X)列的矩阵,得到的z0也为矩阵

mesh(x0,y0,z0)%即画出你要的网格图

希望我的回答能帮助你!

波峰局部最高处

波谷局部最低处

for i=2:length(y)-1

if(y(i)>=y(i-1))&&y(i)>=y(i+1)

disp(i)

fprintf('波峰')

end

if(y(i)<=y(i-1))&&y(i)<=y(i+1)

disp(i)

fprintf('波谷')

end

end