2010-05-06 35 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,[])