Page 134 - MATLAB Recipes for Earth Sciences
P. 134

128                                                 6 Signal Processing

            Although the function filter yields an output vector with the same length
            as the input vector, we have to correct the output as well. In this case, the
            function filter assumes that the fi lter is causal. The fi lter weights are in-
            dexed n, n-1, n-2 and so on. Hence, no future elements of the input vector,
            such as x(n+1), x(n+2) and so forth are needed to compute the output y(n).

            This is of great importance in the field of electrical engineering, the classic


            field of application of MATLAB, where filters are often applied in real time.
            In earth sciences, however, in most applications the entire signal is available
            at the time of processing the data. Filtering the data series is computed by
               y4 = filter(b3,1,x3);

            and afterwards the phase correction is carried out using
               y4 = y4(1+(m3-1)/2:end-(m3-1)/2,1);
               y4(end+1:end+m3-1,1)=zeros(m3-1,1);

            which only works for an odd number of filter weights. This command sim-

            ply shifts the output by(m-1)/3 towards the lower end of the t-axis, then

            fills the end of the data series by zeros. Comparing the ends of both outputs
            illustrates the effect of this correction, where

               y3(1:5,1)
               y4(1:5,1)

            yields
               ans =
                   0.3734
                   0.4437
                   0.3044
                   0.4106
                   0.2971

               ans =
                   0.3734
                   0.4437
                   0.3044
                   0.4106
                   0.2971
            This was the lower end of the output. We see that both vectors y3 and y4
            contain the same elements. Now we explorer the upper end of the data vec-
            tor, where

               y3(end-5:end,1)
               y4(end-5:end,1)
   129   130   131   132   133   134   135   136   137   138   139