2013-07-12 29 views
1

文字解釋我寫一個腳本讀取文件的目錄,處理它們,然後將結果寫回磁盤。由於這是一個漫長的操作(通常爲4000個文件或更多),我現在用的是waitbar函數來顯示進度:如何改變的sprintf

files = dir('*.bin'); 
h = waitbar(0,sprintf('Processing (0/%u)',K)); 
K = numel(files); 
for k = 1:K 
    filename = files(k).name; 
    waitbar(k/K,h,sprintf('Processing %s (%u/%u)',filename,k,K)); 
    % do stuff to file and save 
end 
delete(h); 

這一切都很好,除了文件名都含有下劃線,所以當sprintf呈現waitbar標籤,TeX解釋器將它們全部更改爲下標。如果我使用了text命令的身影,我會指定'Interpreter','none',但sprintf不會出現這樣的選擇。

我知道我可以改變全球的解釋,但我使用TeX的解釋在環路上的一個數字顯示註釋數據的其他部分,所以我寧願只改變本地。有沒有一種方法來改變我的等待欄標題的解釋器?

+0

有關轉義下劃線代替呢? –

回答

4

sprintf沒有解釋,因爲它無關的顯示。您需要查看的位是waitbar

更改解釋器的替代方法是將_的任何實例替換爲\_--即使用轉義字符。

可以這樣做,像這樣:

waitbar(k/K,h,strrep(sprintf('Processing %s (%u/%u)',filename,k,K), '_', '\_')); 
0

由於@Alan指出,sprintf無關文本的顯示。您可以將顯示文本對象的Interpreter屬性設置爲none

waitbar情況下,感興趣的文本對象是其title對象:

hw = waitbar(0, 'Example'); 
ht = get(get(hw, 'CurrentAxes'), 'title'); 
set(ht, 'Interpreter', 'none'); 
waitbar(1, hw, 'Please \do not_interpret me!');