2017-11-24 9 views
1

Simulink의 MATLAB Function 블록에서 영구 변수를 구현할 수 있습니다. 그러나 누군가 MATLAB 함수 블록이나 다른 유사한 스크립팅 접근법없이 동일한 것을 구현하는 방법은 무엇입니까? 즉, Simulink의 영구 변수의 동작을 기본/기본 블록 (외부 도구 상자 없음)으로 복제 할 수 있습니까?Simulink에서 영구 변수와 동일한 기능을 구현하는 방법은 무엇입니까?

function y = fcn(u) 
%#codegen 
persistent n; 
if isempty(n) %%initialize persistent variable 
    n = 1; 
end 
if u == 4 || n == 1 
    y = 0; 
    n = 2; 
elseif n == 2 
    if ... 
     n = 1; 
    else ... 
     n = 3; 
    end 
else 
    n = -1; 
end 
+1

이와 같은 영구 메모리는 [Unit Delay] (https://www.mathworks.com/help/simulink/slref/unitdelay.html)와 동일합니다. 귀하의 예제에서 초기 조건은 '1', 블록 출력은 _old_'n '이고 코드의 논리는 (n = n) 블록 입력 신호를 계산하는 데 사용됩니다. –

답변

1

Data Store Memory 블록을 사용하여 영구 변수를 시뮬레이션 할 수 있습니다.

영구 변수는 함수 호출에서 값을 유지하지만 해당 함수 내에서만 액세스 할 수 있으므로 영구 변수를 나타내는 데이터 저장소 메모리 블록이 포함 된 Simulink 하위 시스템 (함수를 나타냄)을 설정할 수 있습니다.