How do i do moving average in s-function level 2?
    5 views (last 30 days)
  
       Show older comments
    
Hi i want to do moving average in s-function level 2, When using matlab script i wrote this formula where r=residual with size 1, samples is the time step.
window=10;
 if samples > window
    sumS = 0;
    for l = 1:window,
      if l==1,
        S = (1/window) * (Htime(samples,:)) ./ R.^(1/2);
      else
        S= (1/window) * sum( (Htime(samples-(l-1):samples,:)) ./ R.^(1/2) );
      end;
      sumS=sumS + S*S';
    end;
    CovTime=((1/window)*sum(r(:,samples-window+1:samples)./ R.^(1/2))).^(2);
    CovEnsemble=S*Pold*S' + (1/window); 
    CovDifference = CovTime - CovEnsemble;
    if CovDifference > 0
      Qparameter = CovDifference / sumS;
    else
      Qparameter = 0;
    end;
the problem is when i am using s-function level 2, where i want to get this residual ~ r(:,samples-window+1:samples) , where i only have 1 data only when running the simulation. how do i get the previous data (residual) in s-function and to use in concurrently?
How do i define/ do it in s-function level 2? Thank you.
0 Comments
Answers (1)
  Kaustubha Govind
    
      
 on 18 Mar 2013
        It looks like you need to maintain a "state" on the block. Please look into Using DWork Vectors in Level-2 MATLAB S-Function.
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
