2013-05-03 36 views
0

我需要多次重複此代碼。它是系統測試器的一部分。在Matlab中使用匿名函數封裝代碼?

[email protected](fBE,fMCS,CI) 
{ 
    d='FV'; 
    dF=strcat('testing/systemTestFiles/D_', fBE, '_', fMCS, '_', d, '.txt'); 
    bepo(fBE,CI,fMCS,d,dF,oF); 

    d='B'; 
    oF=strcat('testing/systemTestFiles/O_', fBE, '_', fMCS, '_', d, '.txt'); 
    bepo(fBE,CI,fMCS,d,dF,oF); 
}; 

Error: File: systemTester.m Line: 3 Column: 6 
The expression to the left of the equals sign is not a valid target for an 
assignment. 

我不知道,但它看起來像Matlab不接受這種大尺寸的匿名函數。那麼如何使用匿名函數封裝更大的代碼,而不僅僅是像[email protected](x) x+1這樣的東西?這裏封裝的唯一方法是創建一個新文件嗎?

[更新]無法正常工作,有可能將其變爲執行?

[email protected](fBE,fMCS)for d=1:2 
    for CI=0:0.25:1 
     if d==1 
      d='FV'; 
     else 
      d='B'; 
     end 
     oF=strcat('testing/systemTestFiles/O_', fBE, '_', fMCS, '_', d, '.txt'); 
     bepo(fBE,CI,fMCS,d,dF,oF); 
    end 
end; 

fBE='TestCase1 BE Evendist v2.txt'; 
fMCS='TestCase1 MCS.txt'; 
test(fBE,fMCS) 

回答

3

匿名函數只能包含一個可執行語句。

所以在你的情況下,只需創建一個常規的M文件功能。


如果你有興趣,對洛倫舒爾的博客介紹函數式編程風格,採用匿名函數做非簡單任務的一系列articles

+0

該代碼具有重複模式,已更新。是否有可能將其變爲執行? – hhh 2013-05-03 23:23:04

+0

並不重要,你不能把多個語句放在一個匿名函數中。除了爲什麼不只是創建一個常規功能? – Amro 2013-05-03 23:39:43