0

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

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)
4

1 回答 1

3

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

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


如果你有兴趣,Loren Shure 的博客上有一系列文章介绍函数式编程风格,使用匿名函数完成非简单任务。

于 2013-05-03T23:02:51.617 回答