2013-08-19 153 views
2

我正在檢查MATLAB中的原始'clc.m'文件。顯然,函數寫成P碼,你只看到這是擺在說明:Matlab clc命令

..\MATLAB\R2013a\toolbox\matlab\iofun\clc.m 

我怎麼能看看原代碼?;然而,這不是主要問題,它只是爲了好玩。

重點是我正在尋找一種方法來清除屏幕後,反轉clc進程。有沒有什麼辦法可以逆轉clc的過程。同樣的問題清除所有以及。

+0

'clc'不是p代碼加密的。這是一個本地功能。 – horchler

回答

2

嘗試使用home而不是clc。雖然clc刪除命令窗口中的所有文本,並將光標移動到左上角給出一個空白窗口,但home只是將光標移動到左上角並給出一個空白窗口 - 但文本仍然存在,您可以向上滾動以查看它。我始終使用home而非clc

無論哪種情況,文本都會保留在命令歷史記錄窗口中,並且可以使用向上/向下箭頭在命令窗口中檢索。

你看不到clc背後的代碼的原因不在於它是p編碼的,而是它是一種內置函數(即不是用MATLAB語言實現的)。 clear也是如此,還有許多數學函數,如svd,eig等等。沒有辦法修改它們以改變它們的作用(例如反轉過程)。


編輯:您可能也想看看進入diary功能,它會記錄所有的輸入和輸出在一個指定的文件命令窗口。我在我的startup.m文件中以下行(類型doc startup,如果你不知道如何使用MATLAB啓動文件):

diaryFolder = 'C:\diaries'; 
diaryFileName = ['diary', datestr(now, 'yyyymmdd'), '.txt']; 
diary(fullfile(diaryFolder, diaryFileName)) 

所以每當我開始MATLAB,它會自動記錄所有命令窗口輸入和輸出到由日期命名的日記文件 - 如果我每天多次啓動MATLAB,它只會附加到同一個文件。只要方便,我可以clchome,並且如果有必要,我總能找到所有可以搜索的記錄。

+0

你對'home'命令是正確的,但是home/clc是否有任何限制(buffer limit)。 (應該是!),我怎麼知道這個限制?另一方面,命令歷史記錄只是保持命令,這不是我的問題。 – NKN

+0

是的,命令窗口滾動緩衝區中的默認行數是5000.您可以在「命令窗口」部分下的MATLAB首選項中更改它。我也想用另一個想法給我的答案添加編輯,所以請稍後再看。 –

0

我不相信會有任何撤消clc過程。也就是說,仍然可以查看命令歷史記錄,以便可以找到某處。

一旦你清除了數據,我相信它永遠消失了。我非常懷疑數據是否存儲在內存中。我知道在一定數量的行後,歷史記錄被刪除。所以你最好的選擇是開始計算緩衝區的大小,然後從那裏繼續查看是否可以找到任何有趣的東西。

+1

我猜'clear'只是釋放內存而不是覆蓋內存,所以在技術上數據仍然存在,直到Matlab或其他進程再次分配相同的空間。 – horchler

+0

@horchler,true。但是你無法保證你恢復的一致性。 – Veridian