2013-05-03 101 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