2013-07-17 3 views
0

"S-function level-1 supports vector inputs and outputs. DOES NOT support multiple input and output ports" S 기능 설명서를 읽었습니다."S-function level-1 벡터 입력 및 출력을 지원합니다. 다중 입력 및 출력 포트를 지원하지 않습니다."

두 번째 문장은 입력 및 출력 차원이 동일해야 함을 의미합니까?

I는 S 기능 레벨 1을 사용하고 다음을 수행 :

[a1, b1] = choose_cells(c, d); 

A1 및 B1을 출력하고, C 및 D는 입력이다. d가 6 개의 값을 갖는 배열 인 경우를 제외하고 모든 변수는 단일 값을가집니다.

첨부 된 이미지를 보면, 우리는 모두 S-function 블록에서 입력 차원이 출력 차원과 같아야 함을 알고 있습니다. 그렇지 않으면 오류가 발생합니다.이 경우 입력 차원은 7이고 출력 차원은 2, 그래서 완벽하게 작동하려면 다이어그램에 "터미네이터"블록을 포함해야합니다. 그렇지 않으면 오류가 발생합니다.

내 문제는 시스템이 커지면 배열 d에이 방법을 사용하여 수백 개의 변수가 포함될 수 있다는 것입니다.이 작업을하려면 수백 개의 "터미네이터"블록을 추가해야한다는 것을 의미합니다. 실용적인 소리.

제발 나를 구현하는 현명한 방법을 제안 해 주시겠습니까? 실제로 나는 수준이 내 수준-1 S-기능을 변환하기 위해 노력 해왔다하지만 기능 출력 (블록) 노력에 또 다른 서브 함수를 호출에 붙어있어 :

http://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co

http://imgur.com/ib6BTTp

업데이트 다른 스레드를 찾는데 아무 소용이 없어도 관련 링크를 제공 하시겠습니까?

내 출력은 입력과 관련된 많은 처리에 따라 달라 지므로 출력값을 계산하고 반환하기 위해 하위 함수를 호출해야하므로 모든 출력에서 ​​직접 출력을 계산합니다. "함수 출력 (블록)", 제 경우에는 가능하지 않다고 생각했습니다.

그러나 Interpreted Matlab Function 블록을 사용하려고했지만 출력 치수가 입력 치수와 같지 않아 실패했습니다. 또한 하나 이상의 출력 반환을 지원하지 않습니다 .......... ......

답변

0

레벨 1 s- 함수는 단일 입력 및 단일 출력 포트를 지원합니다. 이 포트는 벡터이어야합니다. 그러나 길이에는 제한이 없습니다. 입출력 길이가 다를 수 있습니다. 선택기 블록을 사용하여 관련 데이터 만 선택할 수 있습니다. 출력에서 버스를 사용할 필요가 없습니다.

Output에서 다른 하위 함수를 호출해도 제한이 없습니다. 하위 함수가 동일한 파일에 없으면 경로 또는 현재 디렉토리에 있어야합니다.

MATLAB 코드가 MATLAB Function 블록과 호환되는 경우 해당 블록을 사용하는 것이 좋습니다. 설정하고 사용하는 것이 더 간단합니다.