2010-05-06 36 views
2

我想做一个不平坦的背景,然后使用Matlab生成一些测试数据。当我早些时候提出这个问题时,我并不清楚。所以对于这个简单的例子在不平坦的背景上生成数据

for i = 1:10 
for j = 1:10 
f(i,j)=X.^2 + Y.^2 
end 
end 

其中X和Y已经定义,它绘制在一个平面上。我不想扭曲这个函数本身,但是我想要它的表面不会变得不平坦,在某种程度上或某种程度上发生了变化。我希望这个更清楚一点。

+1

你的问题的左下方是一个灰色的词叫'edit'。点击它,你可以编辑你的问题。 – Jonas 2010-05-06 22:20:25

+0

请避免多次发布相同的问题。如果您需要改进您的上一个问题,请点击修改链接进行修改。如果您在该问题下看不到“编辑”链接,则可能是因为您有两个不同的帐户(http://stackoverflow.com/users)。尝试获得OpenID登录并合并这些帐户,这样您就不必复制令人不悦的问题。 – gnovice 2010-05-07 14:09:19

回答

1

您创建背景的方式与创建信号或前景的方式相同:使用将值应用于每个像素的函数。然后你将前景添加到背景中,然后就完成了。

函数NDGRID可能对您有用。

例如,你可以写:

%# create x and y coordinates for every pixel in the image 
[xx,yy] = ndgrid(1:10,1:10); 

%# create foreground 
foreground = xx.^2 + yy.^2; 

%# create an angled background, where y = -10*x; 
background = -xx*10; 

%# show all 
figure 
subplot(1,3,1),imshow(foreground,[]) 
subplot(1,3,2),imshow(background,[]) 
subplot(1,3,3),imshow(foreground+background,[])