Matlab IIR filter implementation Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Matlab code demonstrating use of fft (Fast Fourier Transform)2D convolution in matlabRational Approximation for e with MatlabLess For, more MATLABesque?Linear interpolation Matlab to C++Optimizing C++ equivalent of Matlab `filter` functionParzen window density estimation in MATLABOptimizing MATLAB LoopMedian Filter Implementation In PythonApplying correction to a time series in Matlab

Why is std::move not [[nodiscard]] in C++20?

Why is the change of basis formula counter-intuitive? [See details]

Moving a wrapfig vertically to encroach partially on a subsection title

What is the origin of 落第?

Is it dangerous to install hacking tools on my private linux machine?

How do living politicians protect their readily obtainable signatures from misuse?

White walkers, cemeteries and wights

Can an iPhone 7 be made to function as a NFC Tag?

Does silver oxide react with hydrogen sulfide?

"klopfte jemand" or "jemand klopfte"?

After Sam didn't return home in the end, were he and Al still friends?

Simple Http Server

What initially awakened the Balrog?

How to write capital alpha?

Is multiple magic items in one inherently imbalanced?

My mentor says to set image to Fine instead of RAW — how is this different from JPG?

Found this skink in my tomato plant bucket. Is he trapped? Or could he leave if he wanted?

What does it mean that physics no longer uses mechanical models to describe phenomena?

Can you force honesty by using the Speak with Dead and Zone of Truth spells together?

Why datecode is SO IMPORTANT to chip manufacturers?

Flight departed from the gate 5 min before scheduled departure time. Refund options

One-one communication

A term for a woman complaining about things/begging in a cute/childish way

Are the endpoints of the domain of a function counted as critical points?



Matlab IIR filter implementation



Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Matlab code demonstrating use of fft (Fast Fourier Transform)2D convolution in matlabRational Approximation for e with MatlabLess For, more MATLABesque?Linear interpolation Matlab to C++Optimizing C++ equivalent of Matlab `filter` functionParzen window density estimation in MATLABOptimizing MATLAB LoopMedian Filter Implementation In PythonApplying correction to a time series in Matlab



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








3












$begingroup$


I need to implement the Matlab filter(b,a,x) function in Java. Before I do this, I would like to rewrite the function in Matlab before translating into Java. So far, writing out all the coefficients works really well. See below:



x = load('data.csv');
windowSize = 10;
b = (1/windowSize)*ones(1,windowSize); % b coefficient - a is unused
i = 1;
for n = length(b) : length(x) % yes I know I am losing my first 10 samples
y(i,:) = [ b(1)*x(n) + b(2)*x(n-1) + b(3)*x(n-2) + b(4)*x(n-3) + ...
b(5)*x(n-4) + b(6)*x(n-5) + b(7)*x(n-6) + b(8)*x(n-7) + ...
b(9)*x(n-8) + b(10)*x(n-9) ];
i = i+1; % used for indexing calculated results into new array
end


However, I want the loop contents to automatically update when I change the window size. In the above example, if I were to increase the windowsize by a factor of two, then I would have to write out twice as many multiples of b and x within the for loop. Which is a terrible solution to my problem. Please advise.










share|improve this question











$endgroup$




bumped to the homepage by Community 10 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.





















    3












    $begingroup$


    I need to implement the Matlab filter(b,a,x) function in Java. Before I do this, I would like to rewrite the function in Matlab before translating into Java. So far, writing out all the coefficients works really well. See below:



    x = load('data.csv');
    windowSize = 10;
    b = (1/windowSize)*ones(1,windowSize); % b coefficient - a is unused
    i = 1;
    for n = length(b) : length(x) % yes I know I am losing my first 10 samples
    y(i,:) = [ b(1)*x(n) + b(2)*x(n-1) + b(3)*x(n-2) + b(4)*x(n-3) + ...
    b(5)*x(n-4) + b(6)*x(n-5) + b(7)*x(n-6) + b(8)*x(n-7) + ...
    b(9)*x(n-8) + b(10)*x(n-9) ];
    i = i+1; % used for indexing calculated results into new array
    end


    However, I want the loop contents to automatically update when I change the window size. In the above example, if I were to increase the windowsize by a factor of two, then I would have to write out twice as many multiples of b and x within the for loop. Which is a terrible solution to my problem. Please advise.










    share|improve this question











    $endgroup$




    bumped to the homepage by Community 10 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

















      3












      3








      3





      $begingroup$


      I need to implement the Matlab filter(b,a,x) function in Java. Before I do this, I would like to rewrite the function in Matlab before translating into Java. So far, writing out all the coefficients works really well. See below:



      x = load('data.csv');
      windowSize = 10;
      b = (1/windowSize)*ones(1,windowSize); % b coefficient - a is unused
      i = 1;
      for n = length(b) : length(x) % yes I know I am losing my first 10 samples
      y(i,:) = [ b(1)*x(n) + b(2)*x(n-1) + b(3)*x(n-2) + b(4)*x(n-3) + ...
      b(5)*x(n-4) + b(6)*x(n-5) + b(7)*x(n-6) + b(8)*x(n-7) + ...
      b(9)*x(n-8) + b(10)*x(n-9) ];
      i = i+1; % used for indexing calculated results into new array
      end


      However, I want the loop contents to automatically update when I change the window size. In the above example, if I were to increase the windowsize by a factor of two, then I would have to write out twice as many multiples of b and x within the for loop. Which is a terrible solution to my problem. Please advise.










      share|improve this question











      $endgroup$




      I need to implement the Matlab filter(b,a,x) function in Java. Before I do this, I would like to rewrite the function in Matlab before translating into Java. So far, writing out all the coefficients works really well. See below:



      x = load('data.csv');
      windowSize = 10;
      b = (1/windowSize)*ones(1,windowSize); % b coefficient - a is unused
      i = 1;
      for n = length(b) : length(x) % yes I know I am losing my first 10 samples
      y(i,:) = [ b(1)*x(n) + b(2)*x(n-1) + b(3)*x(n-2) + b(4)*x(n-3) + ...
      b(5)*x(n-4) + b(6)*x(n-5) + b(7)*x(n-6) + b(8)*x(n-7) + ...
      b(9)*x(n-8) + b(10)*x(n-9) ];
      i = i+1; % used for indexing calculated results into new array
      end


      However, I want the loop contents to automatically update when I change the window size. In the above example, if I were to increase the windowsize by a factor of two, then I would have to write out twice as many multiples of b and x within the for loop. Which is a terrible solution to my problem. Please advise.







      matlab signal-processing






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 24 '18 at 16:33







      Christopher Byrne

















      asked Feb 23 '18 at 13:56









      Christopher ByrneChristopher Byrne

      162




      162





      bumped to the homepage by Community 10 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 10 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.






















          1 Answer
          1






          active

          oldest

          votes


















          0












          $begingroup$

          So this solution works:



          x = load('data.csv');
          windowSize = 10;
          b = (1/windowSize)*ones(1,windowSize);
          i = 1;

          for n = windowSize: length(x)
          m = 0;
          tempSum = 0;
          for j = 1 : windowSize
          temp = b(j)*x(n-m);
          tempSum = tempSum + temp;
          m = m + 1;
          end
          y(i,:) = [tempSum]
          i = i+1;
          end


          See results below:



          windowsize10



          windowsize30



          Instead of having really inaccurate results in the beginning I just skip these. It's important to note that you are losing an amount of samples equal to the number of b coefficients in this solution. So make sure to rescale the X-axis.



          Results were compared using Matlabs C = setdiff(y,yy) function and found no difference between the proposed solution and Matlabs filter(b,a,x) function.






          share|improve this answer









          $endgroup$












          • $begingroup$
            There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
            $endgroup$
            – Royi
            Feb 8 at 16:52











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f188192%2fmatlab-iir-filter-implementation%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0












          $begingroup$

          So this solution works:



          x = load('data.csv');
          windowSize = 10;
          b = (1/windowSize)*ones(1,windowSize);
          i = 1;

          for n = windowSize: length(x)
          m = 0;
          tempSum = 0;
          for j = 1 : windowSize
          temp = b(j)*x(n-m);
          tempSum = tempSum + temp;
          m = m + 1;
          end
          y(i,:) = [tempSum]
          i = i+1;
          end


          See results below:



          windowsize10



          windowsize30



          Instead of having really inaccurate results in the beginning I just skip these. It's important to note that you are losing an amount of samples equal to the number of b coefficients in this solution. So make sure to rescale the X-axis.



          Results were compared using Matlabs C = setdiff(y,yy) function and found no difference between the proposed solution and Matlabs filter(b,a,x) function.






          share|improve this answer









          $endgroup$












          • $begingroup$
            There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
            $endgroup$
            – Royi
            Feb 8 at 16:52















          0












          $begingroup$

          So this solution works:



          x = load('data.csv');
          windowSize = 10;
          b = (1/windowSize)*ones(1,windowSize);
          i = 1;

          for n = windowSize: length(x)
          m = 0;
          tempSum = 0;
          for j = 1 : windowSize
          temp = b(j)*x(n-m);
          tempSum = tempSum + temp;
          m = m + 1;
          end
          y(i,:) = [tempSum]
          i = i+1;
          end


          See results below:



          windowsize10



          windowsize30



          Instead of having really inaccurate results in the beginning I just skip these. It's important to note that you are losing an amount of samples equal to the number of b coefficients in this solution. So make sure to rescale the X-axis.



          Results were compared using Matlabs C = setdiff(y,yy) function and found no difference between the proposed solution and Matlabs filter(b,a,x) function.






          share|improve this answer









          $endgroup$












          • $begingroup$
            There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
            $endgroup$
            – Royi
            Feb 8 at 16:52













          0












          0








          0





          $begingroup$

          So this solution works:



          x = load('data.csv');
          windowSize = 10;
          b = (1/windowSize)*ones(1,windowSize);
          i = 1;

          for n = windowSize: length(x)
          m = 0;
          tempSum = 0;
          for j = 1 : windowSize
          temp = b(j)*x(n-m);
          tempSum = tempSum + temp;
          m = m + 1;
          end
          y(i,:) = [tempSum]
          i = i+1;
          end


          See results below:



          windowsize10



          windowsize30



          Instead of having really inaccurate results in the beginning I just skip these. It's important to note that you are losing an amount of samples equal to the number of b coefficients in this solution. So make sure to rescale the X-axis.



          Results were compared using Matlabs C = setdiff(y,yy) function and found no difference between the proposed solution and Matlabs filter(b,a,x) function.






          share|improve this answer









          $endgroup$



          So this solution works:



          x = load('data.csv');
          windowSize = 10;
          b = (1/windowSize)*ones(1,windowSize);
          i = 1;

          for n = windowSize: length(x)
          m = 0;
          tempSum = 0;
          for j = 1 : windowSize
          temp = b(j)*x(n-m);
          tempSum = tempSum + temp;
          m = m + 1;
          end
          y(i,:) = [tempSum]
          i = i+1;
          end


          See results below:



          windowsize10



          windowsize30



          Instead of having really inaccurate results in the beginning I just skip these. It's important to note that you are losing an amount of samples equal to the number of b coefficients in this solution. So make sure to rescale the X-axis.



          Results were compared using Matlabs C = setdiff(y,yy) function and found no difference between the proposed solution and Matlabs filter(b,a,x) function.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Feb 24 '18 at 16:46









          Christopher ByrneChristopher Byrne

          162




          162











          • $begingroup$
            There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
            $endgroup$
            – Royi
            Feb 8 at 16:52
















          • $begingroup$
            There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
            $endgroup$
            – Royi
            Feb 8 at 16:52















          $begingroup$
          There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
          $endgroup$
          – Royi
          Feb 8 at 16:52




          $begingroup$
          There are much better ans simpler ways to implement Box Filter. If this is all you need, you can get much better.
          $endgroup$
          – Royi
          Feb 8 at 16:52

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f188192%2fmatlab-iir-filter-implementation%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar