2016-05-13 102 views
0

我有以下腳本:如何從MATLAB中的內聯函數返回值?

im = imagesc(anImage, 'parent', gca); 
set(im,'HitTest','off'); 
set(gca,'buttondownfcn', @someFunction) 

我的問題是,我想someFunction返回一些值,但我不知道怎麼做,在這種特殊情況。這似乎是內聯不讓我這樣做...

謝謝。

+0

返回*其中*? – excaza

+0

@excaza基本上,我只是想讓它返回到我的工作區...,以便我可以在程序的下一行中操作它。 – TheGrapeBeyond

+0

在您編寫的'@ someFunction'代碼中,您提供了一個函數句柄作爲函數'set'的輸入。要將它用作工作空間中的一個函數,你可以明確地將它分配給變量'>> myHdlFunction = @ someFunction',然後用它作爲>> >> myHdlFunction(input1,input2)'(顯然,替換'input1'和'輸入2'由適當的輸入)。函數句柄在MATLAB [文檔]中描述(http://uk.mathworks.com/help/matlab/matlab_prog/creating-a-function-handle.html)。 – user1391279

回答

1

要使someFunction()在您的基本工作區中設置一個值(我假定您想要實現的),可以使用assignin()函數。

someFunction()一個例子,用於設置可變axes_position到當前座標位置被以下

function someFunction(hObject, event) 
assignin('base', 'axes_position', get(hObject, 'Position')); 

看看如何處理與MATLAB用戶指南中的軸和圖屬性頁面軸和圖形控件中的用戶UI輸入(沒有足夠的信譽來添加兩個鏈接)。

但是,你提到你想在程序的下一行中操縱它。如果我理解正確,這就是guidata函數的意思:「存儲或檢索UI數據」

+0

謝謝。我後來想到了,但你的答案很好地包含了這個過程。再次感謝! :) – TheGrapeBeyond