%% Modify Amplitude of Data
% This example shows how to modify the amplitude of a vector of data by applying a transfer function.
% In digital signal processing, filters are often represented by a transfer function. The Z-transform of the difference equation
% \begin{array}{rcl}
% a(1)y(n) &=& b(1)x(n)+b(2)x(n-1)+...+b(N_{b})x(n-N_{b}+1)\\
% &&{}-a(2)y(n-1)-...-a(N_{a})y(n-N_{a}+1)\end{array}
% is the following transfer function.
% Y(z) = H(z^{-1})X(z) =
% \frac{b(1)+b(2)z^{-1}+...+b(N_{b})z^{-N_{b}+1}}{a(1)+a(2)z^{-1}+...+a(N_{a})z^{-N_{a}+1}}X(z)
% Use the transfer function
% H(z^{-1}) = \frac{b(z^{-1})}{a(z^{-1})} =
% \frac{2+3z^{-1}}{1+0.2z^{-1}}
% to modify the amplitude of the data in count.dat.
%
% Load the data and assign the first column to the vector x.

load count.dat
x = count(:,1);

%
% Create the filter coefficient vectors according to the transfer function H(z^{-1}).

a = [1 0.2];
b = [2 3];

%
% Compute the filtered data, and plot both the original data and the filtered data. This filter primarily modifies the amplitude of the original data.

y = filter(b,a,x);

t = 1:length(x);
plot(t,x,'--',t,y,'-')
legend('Original Data','Filtered Data')

% Copyright 2012 The MathWorks, Inc.