在Matlab中使用匿名函数封装代码?

时间:2013-05-03 23:01:10

标签: matlab functional-programming anonymous-function

我需要多次重复此代码。它是系统测试人员的一部分。

testFvB=@(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不接受这种大尺寸的匿名功能。那么如何使用匿名函数来封装更大的代码而不仅仅是像doIt=@(x) x+1这样的东西呢?这里封装的唯一方法是创建一个新文件吗?

[更新]无效,是否可以将其变为执行?

test=@(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)

1 个答案:

答案 0 :(得分:3)

匿名函数只能包含一个可执行语句。

所以在你的情况下,只需创建一个常规的M文件函数。


如果您有兴趣,Loren Shure的博客中会有一系列articles介绍函数式编程风格,使用匿名函数执行非简单任务。