我有返回兩個給定的輸入口0
或1
根據自定義功能:如何繪製自定義功能輪廓?
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);
該地塊將只是簡單地顯示在功能等值線圖上0
或1
。
我有返回兩個給定的輸入口0
或1
根據自定義功能:如何繪製自定義功能輪廓?
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);
該地塊將只是簡單地顯示在功能等值線圖上0
或1
。
如果你的函數myFunction
不是設計來處理矩陣的輸入,那麼你可以使用函數ARRAYFUN將其應用到的x
和y
所有相應的條目:
[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產生的情節逆轉。
下面將做到這一點:
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
注意 - 你應該用一個更好的分辨率大於0.5時,除非該功能是極其緩慢。 – Reinderien 2010-09-24 04:40:00