matlab记录满足要求的点并画这些点的等高线

来源:百度知道 编辑:UC知道 时间:2024/05/26 21:34:34
程序思路(举个例子):在-20<y<20,-20<z<20,范围内搜索点,判断如果
y^2+z^2<100;则记录下此点,x=abs(y)+abs(z);将这些点保存在矩阵或树组中都可以,总之要记录下来,最后画y,z关于x的等高线图(要平面图,就是一圈一圈那种),请帮忙设计个类似的能通用的程序,搜索y,z要循环嵌套循环,满足的点放到数组或矩阵里,不满足继续搜索。如果答案采纳再追加200分(总之把我的分都给你),谢谢!
感谢 wacs5,你的程序可以实现,但我实际的程序很大,判断如果 y^2+z^2<100;这句能否用if语句,否则在我的程序中不容易实现,find和NaN我不是很熟悉能解释一下吗?再次谢谢
这是我程序的一部分:
e=-60:1:60;
f=-150:1:150;
for i=1:length(e)
for j=1:length(f)
中间计算过程
if 判断是否满足要求
满足则记录e与f
然后画y,z关于x的等高线图,
还有就是contour(*,*,*,*)我也不是很会用,
最后一个数代表什么?

y=-20:0.1:20;
z=-20:0.1:20;
[yy,zz]=meshgrid(y,z);
x=abs(yy)+abs(zz);

i=find(yy.^2+zz.^2>=100);
x(i)=NaN;
contour(yy,zz,x,15);

=============for循环实现=============
y=-20:0.2:20;
z=-20:0.5:20;
[yy,zz]=meshgrid(y,z);

[ny,nz]=size(yy);
x=zeros(size(yy));
flag=[];
num=1;
for i=1:ny
for j=1:nz
if yy(i,j)^2+zz(i,j)^2<100 %记录下满足条件的点的横纵标号
flag(1,num)=i;
flag(2,num)=j;
x(i,j)=NAN; %不满足的点,还是赋值NAN,你赋别的话,做等高线的时候会有一点小问题
num=num+1;
else
x(i,j)=abs(yy(i,j))+abs(zz(i,j));
end
end
end
contour(yy,zz,x,15);

我还没有实验过。

==================
coutour最后一个代表画等高线的条数。