2014-09-24 3 views
0

Simulink에서 Matlab 함수 블록이 호출 될 때마다 크기가 커지는 Matlab 함수 블록 내에 전역 배열을 만들고 싶습니다. Matlab 함수 블록에서 전역 변수를 만드는 유일한 방법은 "Data Store Memeory"블록에 연결하는 것입니다. 그러나이 방법으로는 크기가 증가하는 배열을 만들 수 없습니다.Simulink에서 크기가 커지는 전역 배열을 만드는 방법

현재 Matlab 함수 블록 내에서 로컬 배열을 사용하고 함수 블록을 종료하고 다음 반복에서 읽어 오기 전에 파일의 배열 내용을 파일에 쓰려고합니다. 이렇게하면 실행 시간이 느려집니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

0

함수에 영구 변수를 사용하여 데이터를 저장할 수 있습니다. 당신의 MATLAB 경로에있는 파일 varsizeDataStore.m에 다음과 같은 기능을 배치 :

function y = varsizeDataStore(varargin) 
%#codegen 
% Update the bounds to fit your needs 
coder.varsize('p',[1,2000], [0,1]); 
persistent p; 
if isempty(p) 
    p = zeros(1,0); 
end 

if nargin > 0 
    p = [p, varargin{1}]; 
end 

y = p; 

당신이 영구 변수를 성장 varsizeDataStore에 매개 변수를 전달해야합니다. 값을 조회하려면 매개 변수없이 호출하십시오.

당연히 로직을 varsizeDataStore에서 필요에 맞게 변경할 수 있습니다. 그 목적은 전역 변수를 사용하지 않고 데이터를 저장하고 쿼리하는 방법으로 영구 변수와 함수를 사용하는 아이디어를 입증하는 것입니다.

관련 문제