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

無名関数には、実行可能なステートメントを 1 つだけ含めることができます。

したがって、あなたの場合は、通常の M ファイル関数を作成するだけです。


興味のある方は、 Loren Shure のブログに一連の記事があり、関数型プログラミング スタイルを紹介しており、無名関数を使用して単純ではないタスクを実行しています。

于 2013-05-03T23:02:51.617 に答える