我想確保用戶定義的MATLAB函數(包含在m文件中)的輸入參數具有某種類型。我知道MATLAB會自動將數據類型分配給變量(以滿足某些人的喜好和令其他人感到沮喪),但是我想知道在MATLAB中是否存在「嚴格數據類型」選項,或者類似的東西,特別是用於用戶定義函數的輸入參數。是否有可能在MATLAB中強制輸入參數數據類型?
我發現MATLAB的「基礎類」(數據類型)的這兩個網頁一個有用的解釋:
http://www.mathworks.com/help/matlab/matlab_prog/fundamental-matlab-classes.html http://www.mathworks.com/help/matlab/data-types_data-types.html
不過,我一直無法找到答案的嚴格問題數據類型,特別是函數輸入參數。我認爲這將是一個非常基本的問題,在很多地方已經得到了回答,但經過廣泛的搜索後,我還沒有找到確鑿的答案。現在,我一直在使用is[TYPE]()
功能手動檢查數據類型,如果不符合要求則顯示錯誤消息,雖然這看起來很渺茫,我希望我能讓MATLAB爲我執行它。
下面是一個函數的例子,我想在其中指定輸入參數數據類型。它位於MATLAB當前路徑中的一個名爲strict_data_type_test.m
的文件中。在這個函數中,我想強制變量yes_or_no
是MATLAB的logical
數據類型。我知道我可以使用islogical()
函數來手動檢查,但我的問題是,是否有可能讓MATLAB爲我執行它。我也知道任何非零的double值都爲真,零值爲false,但我想強制用戶發送一個logical
以確保錯誤的參數不是偶然發送的,例如。下面是示例性函數:
function y = strict_data_type_test(x, yes_or_no)
% manual data type check can go here, but manual check is not desirable
if (yes_or_no)
y = 2 .* x;
else
y = -5 .* x;
end
end
添加輸入參數變量名之前的數據類型(如在大多數編程語言)治療中的數據類型的文本作爲另一個變量名而不是一個數據類型標識符。由此看來,嚴格的數據類型在MATLAB中無法以任何方式實現,但也許你們中的一位大師知道我無法找到的有用技巧,功能或語法。
非常感謝您的幫助。
答案是否定的。你調用的是[TYPE]()'是實現它的方法。或者閱讀['inputParser'](http://www.mathworks.com/help/matlab/ref/inputparserclass.html)class [here](http://www.mathworks.com/help/matlab/matlab_prog /input-parser-validation-functions.html)。或者如果你喜歡,寫一個'mex'函數。如果強制類型和用戶傳入錯誤類型,您會發生什麼? – horchler
我同意其他人認爲'inputParser'是要走的路。請參閱[此處](http://stackoverflow.com/a/20337956/2778484)以獲取摘要和簡明示例。 – chappjc
爲了迴應horchler:我希望如果出現了類型強制執行,並且用戶從控制檯傳入了錯誤的類型,那麼會發生錯誤(不需要手動編程函數內的錯誤),更重要的是,如果用戶在另一個腳本或函數內輸入函數調用,那麼MATLAB會將函數調用突出顯示爲錯誤,向用戶顯示它不正確,而不必運行腳本/函數(「編譯器執行」)。 – Babak