查看完整版本 : [MATLAB图像处理] 急求matlab高手!
miaomiao
2009-04-20, 16:23
我现在想实现这样一个功能:
画出函数z=x^2.*y^2在区域y-2x-1<=0 和y+x-1<=0 和y-1/2x-1/2>=0上的图
像,请问如何实现,谢谢啦!:)
你可以用逻辑判断选择绘图区域,以下是我写的,绘图精度你可以自己调。
>> [x,y]=meshgrid(-10:0.05:10,-10:.05:10);
>> z=(x.^2+y.^2)*((y-2*x-1<=0)&(y+x-1<=0)&(y-0.5*x-0.5>=0));
>> mesh(z),pause
如有问题可联系我,QQ:602561167
miaomiao
2009-04-20, 18:21
谢谢,我刚学,好多地方不懂,我想问问,本来z=x.^2.*y.^2,
怎么变成了z=x.^2+y.^2呢?还有,为什么要乘以三个限制条件呢,我用if语句判断可以吗?
因为在这里x,y是一个矩阵,所以要用.^来表示是对矩阵的每一个元素进行运算。用逻辑表达式其实在这里只是一种常用的技巧,我们为了选择区域,我们可以将区域以外的数置0,这样就可以了,应该还有其它的方法,只是我也不知道,其实我也是初学着。
silas_xue
2009-04-21, 05:40
lz if语句是可以实现的
2楼画的是抛物面 lz的定义函数z=x^2.*y^2是什么意思?
不是想画抛物面么?
miaomiao
2009-04-21, 10:56
我想画的是Z=x2*y2(也就是x的平方乘以y的平方)在一个三角形区域上的图像,而不是整个二维平面上的图像,我用的是if语句,但是发现我的if语句根本就没有执行,我把我的语句贴出来,麻烦帮忙看看哪里出问题了,谢谢!
x=-1:0.01:1;
y=x;
[X,Y]=meshgrid(x,y);
n1=length(X);
n2=length(Y);
for i = 1:n1
for j=1:n2
if ((Y(j)<=2*X(i)+1)&& (Y(j)<=1-X(i))&&(Y(j)-0.5*X(i)+0.5>=0))
Z(i,j)=X(i).^2.*Y(j).^2;
else
Z(i,j)=0;
end;
end;
end;
>> mesh(X,Y,Z);
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.