Implementing a discrete buffer, i.e. a Memory Block with multiple frames
Afficher commentaires plus anciens
Dear Forum,
I really like the memory block in matlab to store a single value from the previous frame in a fixed-step discrete simulink simulation. However, is there any way to have a "memory block" with more than one sample of memory? For example, buffering the last 3 samples, and then being able to extract any of the three samples I want?
I have successfully done this using a persisent and preallocated matrix in a matlab function block. This is okay, bbut coding it is clunky, and it slows down my simulation. Is there any built-in solution?
Here is the matlab code that I would like a built in solution instead of:
%% matlab code inside a MatlabFunction block. REALLY SLOW!
%last in first out
function y=LIFO(u,bufferSize)
persistent buffer
if (isempty(buffer))
buffer=zeros(1,bufferSize)
end
y=buffer(1)
for i=1:bufferSize-1
buffer(i)=buffer(i+1)
end
buffer(bufferSize)=u
end
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Programmatic Model Editing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
