2012-05-29 38 views
2

我在matlab中編寫代碼,在此代碼中我有一個函數f(),它調用函數g(),它調用函數h()退出返回主函數 - Matlab

功能f()for循環,迭代101次,g()電話h()調用g()
每次迭代,h()顯示圖像,用戶做一些改變圖像,直到他按下輸入Ø鍵:

  • 如果他按下輸入h()回報的文件他所做的改變,並繼續到下一個圖像。
  • 如果他按Oh()返回更改的文件。但不會繼續顯示下一張圖像,而是返回到Main

它喜歡C.

任何想法我怎麼能做到這一點exit(1)

回答

6

我認爲您正在尋找return。雖然它不會立即將您返回到h,但您也必須在某處放置return

只要您在function declaration中指定至少一個輸出變量,無論您是否使用return,都將返回輸出。

例如:很多

function out = f() 
    % do stuff 
    x = g(); 
    % do stuff with x 
end 


function out = g() 
    % do other stuff 
    out = h(); 
    if strcmp(out, 'O') % check whether user entered 'O' in h() 
     return; 
    else 
     % do different stuff 
    end 
end 

function out = h() 
    out = input(); 
end 
+0

@Junaxx謝謝回答。對不起,我的問題並不清楚,但即使用戶按下「O」,h()也必須返回一些輸入。換句話說,f()調用g(),i = 0到100(次),g()調用h()。對於每個i,h()顯示圖像,用戶對圖像進行一些更改,直到他按下「Enter」或「O」。如果他按下輸入h()返回他所做更改的一個文件,並且繼續顯示下一個圖像。如果他按下「O」,那麼h()返回變化文件,但不會繼續到下一個圖像,它會返回到Main。現在有什麼想法?並再次感謝。 –

+0

@HowaidaKhoureieh:啊,我明白了。在這種情況下,您可以讓'h()'返回多個輸出變量,如'function [img,key] = h()'。它仍然會首先返回到'g()',我認爲沒有辦法解決這個問題。但基於'key'的值,'g()'可以繼續或者中斷它的循環。 – Junuxx

+0

@Junaxx。謝謝!畢竟,我可能會使用你的解決方案,但我必須先做一些改變。現在我檢查用戶是否按下了「O」,如果是的話,我創建了一個名爲「Exit」的文件。然後我檢查了f()是否存在該文件,如果是的話,我「返回」到main。再次感謝 ! –