网格函数似乎交换x和y值

时间:2013-04-17 15:23:30

标签: matlab mesh

我试图在3d平面上绘制一个非常简单的函数。

f=zeros(101,101);
xs=0:0.1:10;
ys=0:0.1:10;

for j=1:101
    f(1,j)=ys(j);
end

以下是3个地块:

enter image description here enter image description here enter image description here

第一个是f与x在ymin的情节:

figure; plot(xs,f(:,1),'*r')
xlabel('x')
ylabel('f')

第二个是f与y在xmin的情节:

figure; plot(ys,f(1,:),'*r')
xlabel('y')
ylabel('f')

最后,第三个是3d网格:

figure; mesh(xs,ys,f)
xlabel('x')
ylabel('y')

然而,网格图似乎与2 2d图相矛盾,如果你找到我,它似乎会转换x和y。有人可以帮忙吗?它出于某种原因应该是网格(ys,xs,f)吗?谢谢!

1 个答案:

答案 0 :(得分:3)

mesh未切换您的xy,这是一个定义问题。不要忘记矩阵没有x轴或y轴,而是行尺寸和列尺寸。行维度通常首先在一对中表示,就像x维度一样,但是如果你将它等同于图像那么你通常会让x轴穿过它实际上沿着列轴!

尝试这样

for j=1:101
    f(j,1)=ys(j);
end

figure; plot(xs,f(1,:),'*r')
xlabel('x')
ylabel('f')

figure; plot(ys,f(:,1),'*r')
xlabel('y')
ylabel('f')

figure; mesh(xs,ys,f)
xlabel('x')
ylabel('y')