2010-09-24 20 views
2

我有返回兩個給定的輸入口01根據自定義功能:如何繪製自定義功能輪廓?

function val = myFunction(val1, val2) 

    % logic to determine if val=1 or val=0 

end 

如何創建函數在x,y輪廓圖,座標由以下meshgrid產生的?

meshgrid(0:.5:3, 0:.5:3); 

該地塊將只是簡單地顯示在功能等值線圖上01

+0

注意 - 你應該用一個更好的分辨率大於0.5時,除非該功能是極其緩慢。 – Reinderien 2010-09-24 04:40:00

回答

4

如果你的函數myFunction不是設計來處理矩陣的輸入,那麼你可以使用函數ARRAYFUN將其應用到的xy所有相應的條目:

[x,y] = meshgrid(0:0.5:3);  %# Create a mesh of x and y points 
z = arrayfun(@myFunction,x,y); %# Compute z (same size as x and y) 

然後,你可以使用的功能CONTOUR爲上述數據生成等高線圖。由於您的z數據只有2個不同的值,因此您只繪製一個等值線(在兩個值之間的中間值爲0.5時)可能有意義。您可能還需要改爲使用功能CONTOURF,產生顏色填充的輪廓,這將清楚地顯示,其中1和0分別是:

contourf(x,y,z,1); %# Plots 1 contour level, filling the area on either 
        %# side with different color 


注:既然你正在策劃在只有那些數據和零點,繪製輪廓可能不是最佳的可視化方式。我反而使用類似功能IMAGESC,就像這樣:

imagesc(x(1,:),y(:,1),z); 

記住這個情節y軸將相對於由CONTOURF產生的情節逆轉。

2

下面將做到這一點:

function bincontour 
    clear; clc; 

    xrange = 0:.5:3; 
    yrange = 1:.5:5; 
    [xmesh, ymesh] = meshgrid(xrange, yrange); 
    z = arrayfun(@myFunction, xmesh, ymesh); 

    contourf(xrange, yrange, z, 5) 
end 

function val = myFunction(val1, val2) 
    val = rand() > 0.5; 
end