作业帮 > 综合 > 作业

matlab编程问题z(find(z>0))=nan作何解释

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/12 11:55:19
matlab编程问题z(find(z>0))=nan作何解释
a1=-0.05;%微凸体1的参数y=a*x^2+b*y^2+c
b1=-0.2;
c1=5;
x=linspace(-sqrt(abs(c1/a1)),sqrt(abs(c1/a1)),100);
y=linspace(-sqrt(abs(c1/b1)),sqrt(abs(c1/b1)),100);
[x,y]=meshgrid(linspace(-sqrt(abs(c1/a1)),sqrt(abs(c1/a1)),100),linspace(-sqrt(abs(c1/b1)),sqrt(abs(c1/b1)),100));
z=a1*x.^2+b1*y.^2+c1;
z(find(z
matlab编程问题z(find(z>0))=nan作何解释
这是MATLAB绘图比较常用的一种做法.
把符合某个条件的值设为NaN,绘图时这些点就不会绘制,这样可以隐藏不合需要的那部分点.
就这个例子来说,是把满足z<0这个条件的点都换成NaN,也就是说,只绘制曲面的z>=0那部分(也可以把这句换成z(z<0)=NaN;效果完全相同).
 
比较一下,如果没有这句:

加上这句之后:

需要说明的是,由于这种做法是直接去掉一些网格点,往往会导致边缘不平滑.
再问: 我知道这句话的用处,但不理解这个语句的格式,怎么这个括号的用法很特殊
再答: 没什么特殊的,括号里面就是下标。 原来的写法是用find函数获取符合条件元素的下标;我给的写法,括号里面是逻辑数组(logical array),作为下标使用,不是用数组的值做下标(数组的值只有0和1),而是用数组值为真的那些元素的位置做下标。