2016-02-23 33 views
0

每次我打電話給nlfilter函數時都會出現一個進度條窗口。我怎麼能禁用該窗口?有沒有類似-q的選項?如何在Matlab中使用nlfilter函數時禁用進度條?

我正在處理一個圖像的行和應用自定義函數,所以調用nlfilter函數時產生的窗口打擾了很多,也降低了我的系統的性能。

請注意,我只想暫時禁用窗口。

+0

我猜你可以在命令窗口中鍵入'edit nlfilter'後在代碼中註釋相關行(第64-68行)。然後你可以隨時取消註釋。 –

+0

@ Benoit_11好點,但Matlab安裝在一個目錄,我沒有寫權限,並將該函數複製到我的工作目錄不是我正在尋找的解決方案:) – pQB

+0

@pQB您可以[複製功能到一個文件夾上你的路徑](https://stackoverflow.com/questions/34345739/optimizing-the-print-function-in-matlab/34354095#34354095)你有寫權限。 Matlab將使用該版本而不是內置版本。 – drhagen

回答

3

MATLAB中的waitbar肯定會降低代碼的性能,並且在某些操作系統上運行長時間運行的任務時會非常令人討厭,因爲它可以隨意竊取鍵盤/鼠標的焦點。

我個人創建了我自己的waitbar函數,並將它放在MATLAB路徑上,以便它被評估而不是內置。

我有一個更復雜的基於文本的進度條,但下面的函數只是將消息打印到命令行。您甚至可以刪除第一個塊,並將其內容簡單地設爲varargout = {[]};,並且您將沒有輸出。

function varargout = waitbar(varargin) 
    if nargin >= 2 && ischar(varargin{2}) 
     disp(varargin{2}) 
    elseif nargin >= 3 && ischar(varargin{3}) 
     disp(varargin{3}) 
    end 
    varargout = {[]}; 
end 

一定要將這個保存在waitbar.m的某處,在你的MATLAB路徑上。

注意:這會沉默所有 waitbars所以如果你要恢復的典型waitbar行爲,你將需要刪除/重命名此文件。