獲取鼠標坐標值的第一種途徑:利用Matlab7.0 中figure的WindowButtonDownFcn屬性。當你在圖上按下鼠標的時候,可通過該屬性定義一個回調程序。回調程序可以是一個有效的Matlab表達式或者一個M文件。
那么為顯示當前鼠標按下時的坐標值,我們可以將其定義為一個坐標獲取和顯示程序。
例如:
% 主函數
function test_mouse_track()
figure;
axis([-10,10,0,5]);
set(gcf,'WindowButtonDownFcn',@ButttonDownFcn);
% 回調函數
function ButttonDownFcn(src,event)
pt = get(gca,'CurrentPoint');
x = pt(1,1);
y = pt(1,2);
fprintf('x=%f,y=%fn',x,y);
Matlab的ginput()函數
獲取鼠標坐標值的第二種途徑:
ginput提供了一個十字光標使我們能更精確的選擇我們所需要的位置,並返回坐標值。函數調用形式為:
[x,y] = ginput(n)
[x,y] = ginput
[x,y,button] = ginput(...)
對於[x,y] = ginput(n),能使你從當前的坐標系中讀取n個點,並返回這n個點的x,y坐標,均為nX1的向量。可以按回車提前結束讀數。
[x,y] = ginput 可以無限的讀取坐標直到按下回車鍵。
[x,y,button] = ginput(...) 返回x和y的坐標,以及button值(1=左鍵,2=中,3=右)或者按鍵的ASXII碼值。
spline函數:
yi=spline(x,y,xi);
這個是根據己知的x,y數據,用樣條函數插值出xi處的值。即由x,y的值計算出xi對應的函數值。
而pp=spline(x,y);
是由根據己知的x,y數據,求出它的樣條函數表達式。
一個小程序:
axis([0 10 0 10]);
hold on
x=[];
y=[];
n=0;
disp('單擊鼠標左鍵點取需要的點');
disp('單擊鼠標右鍵點取最后一個點');
but=1;
while but==1
[xi,yi,but]=ginput(1);
plot(xi,yi,'bo')
n=n+1;
disp('單擊鼠標左鍵點取下一個點');
x(n,1)=xi;
y(n,1)=yi;
end
t=1:n;
ts=1:0.1:n;
xs=spline(t,x,ts);
ys=spline(t,y,ts);
plot(xs,ys,'r-');
hold off