2013-05-03 4 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. 

나도 몰라하지만 매트랩이 큰 크기의 익명 함수를 허용하지 않는 것 같습니다. 그렇다면 익명의 함수를 사용하여 [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

+0

중요하지 않은, 당신은 익명의 기능에 여러 문장을 넣을 수 없습니다. 게다가 정규 함수를 만드는 것이 아닌가? – Amro

관련 문제