2014-09-11 30 views
0

例如,我在我的仿真模型Matlab的功能塊是這樣的:Matlab的功能塊與設計驗證

function define_tests(row rowValues) 
    for i=1:length(rowValues) 
     sldv.test(row == rowValues(i)); 

設計驗證不生成每個我叫sldv.test時間測試。它在上次調用它時只生成一個測試。

任何想法生成length(rowValues)測試的可能解決方案?由於

回答

1

help page for sldv.test,它說

這個函數沒有輸出,並在其父母的功能沒有影響

它沒有明確說明,但我假設sldv.test不在你的函數中必須「執行」或「調用」本身,而只是作爲表示SLDV在分析你的函數時使用的期望行爲的一種方式。我認爲sldv.test不是要與您的函數中的控制流混合,因爲SLDV實際上並未執行此控制流。

此外,考慮的是,如果你指定如何sldv.test定義的目的,增加新的控制邏輯(如循環或if語句)給你的函數專門,那麼這將無意中添加多餘的覆蓋目標(例如,您的for循環將具有與其關聯的決策覆蓋目標)。 (不知道這是否與你的情況有關,但認爲我會把它扔在那裏以防萬一)

我認爲你最好的選擇是避免在for循環中使用sldv.test,並嘗試向量化測試表達式。使用你的榜樣,這應該是這樣的:

function define_tests(row, rowValues) 
    sldv.test(all(row == rowValues)); 

這應該規定所有的rowValues等於元素的期望的行爲。

以下是關於vectorization in MATLAB的更多信息的鏈接。