您的位置:首页 > 编程语言 > MATLAB

Matlab问答day10

2016-08-27 20:59 141 查看
1.Matlab的delaunay三角剖分函数

clear

clc

%假设已知数据:

x = rand(5,1);

y = rand(5,1);

TRI = delaunay(x',y');

triplot(TRI,x,y);%绘图

即连续平面上的点集,使之完全由三角形构成,且满足一定条件(互不相交、包含)等;

clear

clc

%假设已知数据:

x = rand(5,1);

y = rand(5,1);

z = rand(5,1);

TRI = delaunay(x,y,z);

trisurf(TRI,x,y,z);%绘图

三维也可以完成,只是全部图形由四面体构成。还有trimesh函数等。

参考:Matlab论坛

2. 画三维隐函数的一个数值方法:

Matlab画3维图形的ezplot函数先前提过,但那是用参数方程的方式画图。

对一个隐函数f(x,y,z)来讲,其实它已经到四维空间了,其实x,y,z三点确定一个f。

当我回答论坛一个问题:sin(z)+z+x^2+sin(x)+y+sin(y)=1时,我考虑的确是这个隐函数在f(x,y,z)=1处的“切体”(对等于切面)

因此,我给出的方法是:

clear

clc

syms z

counter =1;

f = @(x,y,z)z+x^2+sin(x-y)-y+sin(y)-1;%给出隐函数

for x = 0:0.3:pi%指定x,y范围

    for y = 0:0.3:pi

        temp(counter) = solve(f(x,y,z)==0,z);%按已知求解方程

        counter = counter + 1;

    end

end

x = 0:0.3:pi;

y = 0:0.3:pi;

temp2 = double(temp);%数值化数据

[X,Y] = meshgrid(x,y);

temp3 = reshape(temp2,size(X));

surf(X,Y,temp3)

可是这个方法十分的不稳定,理论也不太成熟。

还好论坛上的大神们解决了这个问题:

点击打开链接:from Matlab论坛

用到了isosurface, patch, isonormals三个函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 作图 编程