有時我不小心聲明瞭具有函數名稱的變量。Matlab中函數名稱變量的警告
這裏是一個構造例如:
max(4:5) % 5
max(1:10)=10*ones(10,1); % oops, should be == instead of =
max(4:5) % [10 10]
目前,我總能找到這個硬盤的方式,它尤其是我不經常使用的函數名發生。
有什麼辦法讓matlab給出這個警告嗎?在其他警告中看到屏幕的右側是理想的,但我願意接受其他建議。
有時我不小心聲明瞭具有函數名稱的變量。Matlab中函數名稱變量的警告
這裏是一個構造例如:
max(4:5) % 5
max(1:10)=10*ones(10,1); % oops, should be == instead of =
max(4:5) % [10 10]
目前,我總能找到這個硬盤的方式,它尤其是我不經常使用的函數名發生。
有什麼辦法讓matlab給出這個警告嗎?在其他警告中看到屏幕的右側是理想的,但我願意接受其他建議。
由於Matlab允許您重載內置功能,所以在使用現有名稱時不會收到任何警告。
有,但是,一些小技巧超載現有功能的風險降到最低:
使用explicitFunctionNames
。有一個功能maxIndex
而不是max
。
經常使用「Tab」鍵。 Matlab將自動完成路徑上的函數(以及之前聲明的變量)。因此,如果變量自動完成,它已經存在。如果您不記得它是否也是函數,請點擊「F1」查看是否存在幫助頁面。
使用函數而不是腳本,以便工作區中「錯誤」分配的變量不會弄亂您的代碼。
如有疑問,請檢查:
exist max
ans =
5
在help exist
看,你可以看到「max
」是一個函數,且不應被指定爲一個變量。
>> help exist
exist Check if variables or functions are defined.
exist('A') returns:
0 if A does not exist
1 if A is a variable in the workspace
2 if A is an M-file on MATLAB's search path. It also returns 2 when
A is the full pathname to a file or when A is the name of an
ordinary file on MATLAB's search path
3 if A is a MEX-file on MATLAB's search path
4 if A is a MDL-file on MATLAB's search path
5 if A is a built-in MATLAB function
6 if A is a P-file on MATLAB's search path
7 if A is a directory
8 if A is a class (exist returns 0 for Java classes if you
start MATLAB with the -nojvm option.)
我想這可以幫助我在事後檢查中檢查一些變量,如果我面臨一個奇怪的問題:停止程序,保存所有變量名稱列表,清除所有變量,然後使用存在的所有名稱。 但是,如果有一種方法可以在問題出現之前發出警告,那就更好了。 –
我非常確定mlint也可以檢查。
通常我會盡可能地將代碼包裝到函數中。這種覆蓋的範圍侷限於功能的範圍 - 所以沒有持久的問題,除了意外假設當然。
我試圖在mlint偏好中找到它,但沒有成功。 即使啓用所有選項,一個簡單的測試文件仍然沒有mlint警告:max = 2:10; result = max(3:4); 是否有更高級的方法來更改不在首選項屏幕中的mlint設置? –
我看到的具體警告不存在。但有兩個將有助於識別此類問題:*使用變量
我想這隻會讓我困擾,如果我試圖在命令窗口中做一些快速評估。至少這個評論讓我確信,它不太可能被潛入我的代碼中而被忽視。 –
選項卡技巧的確是一種很好的方法來檢查您要使用的單詞是否「乾淨」。如果一個變量已經被放入工作區,它仍然會給出錯誤的否定結果。 –
@ DennisJaheruddin:使用函數代替腳本可以解決這個問題。看我的編輯。 – Jonas