This document discusses MATLAB and Simulink. It provides an overview of what MATLAB is used for, its main components, and how it can be used to design and analyze digital filters. Key points include:
- MATLAB is a technical computing environment used for tasks like math, modeling, simulation, and data analysis. It features toolboxes for specialized applications.
- The main parts of MATLAB are its development environment, function library, programming language, graphics handling, and API.
- Simulink is a toolbox that allows modeling and simulating dynamical systems using block diagrams. It integrates with MATLAB for analysis.
- Digital filter design in MATLAB/Simulink involves using tools like the Filter Designer
This document discusses MATLAB and Simulink. It provides an overview of what MATLAB is used for, its main components, and how it can be used to design and analyze digital filters. Key points include:
- MATLAB is a technical computing environment used for tasks like math, modeling, simulation, and data analysis. It features toolboxes for specialized applications.
- The main parts of MATLAB are its development environment, function library, programming language, graphics handling, and API.
- Simulink is a toolbox that allows modeling and simulating dynamical systems using block diagrams. It integrates with MATLAB for analysis.
- Digital filter design in MATLAB/Simulink involves using tools like the Filter Designer
Digital Filter Implementation Using MATLAB http://asic-soc.blogspot.com/2009/01/digital-filter-implementation-using.html MATLAB SOFTWARE ABOUT MATLAB The name MATLAB stands for matrix laboratory. MATLAB is a high-performance technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation. Typical uses include: Math and computation Algorithm development Modeling, simulation, and prototyping Data analysis, exploration, and visualization Scientific and engineering graphics Application development, including graphical user interface building
MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar non-interactive language such as C or Fortran. MATLAB features a family of application-specific solutions called toolboxes. Very important to most users of MATLAB, toolboxes allow you to learn and apply specialized technology. Toolboxes are comprehensive collections of MATLAB functions (M-files) that extend the MATLAB environment to solve particular classes of problems. Areas in which toolboxes are available include signal processing, control systems, neural networks, fuzzy logic, wavelets, simulation, and many others. THE MATLAB SYSTEM The MATLAB system consists of five main parts: Development Environment: This is the set of tools and facilities that help you use MATLAB functions and files. Many of these tools are graphical user interfaces. It includes the MATLAB desktop and Command Window, a command history, and browsers for viewing help, the workspace, files, and the search path. The MATLAB Mathematical Function Library: This is a vast collection of computational algorithms ranging from elementary functions like sum, sine, cosine, and complex arithmetic, to more sophisticated functions like matrix inverse, matrix eigenvalues, Bessel functions, and fast Fourier transforms. The MATLAB Language: This is a high-level matrix/array language with control flow statements, functions, data structures, input/output, and object-oriented programming features. It allows both "programming in the small" to rapidly create quickly and dirty throwaway programs, and "programming in the large" to create complete large and complex application programs. Handle Graphics: This is the MATLAB graphics system. It includes high-level commands for two- dimensional and three-dimensional data visualization, image processing, animation, and presentation graphics. It also includes low-level commands that allow you to fully customize the appearance of graphics as well as to build complete graphical user interfaces on your MATLAB applications. The MATLAB Application Program Interface (API) This is a library that allows you to write C and Fortran programs that interact with MATLAB. It includes facilities for calling routines from MATLAB (dynamic linking), calling MATLAB as a computational engine, and for reading and writing MAT-files. MATLAB WORKSPACE The MATLAB workspace consists of the set of variables (named arrays) built up during a MATLAB session and stored in memory. You add variables to the workspace by using functions, running M- files, and loading saved workspaces. For example, if you type t = 0:pi/4:2*pi; y = sin(t); Ing. Armando Alberto Cajahuaringa Camaco
The workspace includes two variables, y and t, each having nine values. ABOUT SIMULINK Simulink is a software package for modeling, simulating, and analyzing dynamical systems. It supports linear and nonlinear systems, modeled in continuous time, sampled time, or a hybrid of the two. Systems can also be multirate, i.e., have different parts that are sampled or updated at different rates. For modeling, Simulink provides a Graphical User Interface (GUI) for building models as block diagrams, using click-and-drag mouse operations. With this interface, you can draw the models just as you would with pencil and paper. This is a far cry from previous simulation packages that require you to formulate differential equations and difference equations in a language or program. Simulink includes a comprehensive block library of sinks, urges, linear and nonlinear components, and connectors. You can also customize and create your own blocks. Models are hierarchical, so you can build models using both top-down and bottom-up approaches. You can view the system at a high level, then double-click on blocks to go down through the levels to see increasing levels of model detail. This approach provides insight into how a model is organized and how its parts interact. After you define a model, you can simulate it, using a choice of integration methods, either from the Simulink menus or by entering commands in MATLAB's command window. The menus are particularly convenient for interactive work, while the command-line approach is very useful for running a batch of simulations (for example, if you are doing Monte Carlo simulations or want to sweep a parameter across a range of values). Using scopes and other display blocks, you can see the simulation results while the simulation is running. In addition, you can change parameters and immediately see what happens. The simulation results can be put in the MATLAB workspace for post processing and visualization. Model analysis tools include linearization and trimming tools, which can be accessed from the MATLAB command line, plus the many tools in MATLAB and its application toolboxes. And because MATLAB and Simulink are integrated, you can simulate, analyze, and revise your models in either environment at any point DESIGN AND STUDY OF FILTERS DESIGN STEPS FOLLOWED MATLAB offers varieties of toolboxes using that we can easily design the required digital filter and can observe its phase and magnitude characteristics; construct realization structure of the designed filter; analyze working of the filter. To design a filter and analyze it we followed below mentioned steps: 1. Using Filter Designer And Analyzer window we designed our required filter. To open this window type fdatool in Command Window and press Enter. The obtained filter coefficients (i.e. numerator and denominator coefficients) are noted. 2. Using Filter Realization Wizard window we have constructed the filter structure by inputting filter coefficients and selecting the appropriate form. To open this window type dspfwiz on Command Window and press enter key. Using Launch Pad also we can open this window. Select DSP Blockset from the Launch Pad and click on the +ve mark corresponding to it. A drop down list opens up. From this list select Filter Realization Wizard and double click on it. This opens that window. The constructed structure appears as a subsystem model. A double click on the subsystem block opens the filter structure in Simulink window, which can be simulated. 3. Using Simulink block library function generator, oscilloscope and MUX are connected to the filter structure. Using Simulink debugger the structure is simulated and the results are observed on the oscilloscope. IIR FILTER DESIGN ISSUES We restrict our discussion to the design and analysis of IIR filters only, even though FIR filters provide linear phase throughout the frequency range. In application of our project phase angle Ing. Armando Alberto Cajahuaringa Camaco variation is of no importance; if phase angle variation is also important then automatically discussion orients towards FIR filters. Before directly going into the analysis of IIR filters let us have a glance over Shannons sampling theorem. A signal containing maximum frequency f1Hz may be completely represented by regularly spaced samples, provided the sampling rate fs is at least 2f1 sample per second. i.e. fs=2f1 Nyquist sampling rate If signal is sampled at less than 2f1 rate, aliasing error occurs. Signal is then represented with distortion, which depends on the degree of aliasing. To avoid such distortions use antialiasing filter, a low pass filter with cutoff frequency at f1 (or fs/2). Because of above reason designing any digital filter at higher frequency side becomes difficult owing to higher sampling rate and its generation. Hence we need to restrict ourselves to lower frequency side. Further discussion on these issues will be elaborated in respective filter design studies to forth come. IIR Low pass And High pass Filter Design Issues The ideal response of low pass and high pass filters is as shown in Figure 1 Practically such sharp roll off is not achievable. Using MATLAB we can easily design these filters and simulate it. Even at higher frequencies (like 40 KHz) simulink work satisfactorily. The filter nicely exhibits passband and stopband action. In most of the applications lowpass/highpass filters are used at lower frequencies with increased order, so that sharp roll-off is achieved.
Figure 1 IIR Bandpass Filter Design and Its Implementation Ideally bandpass filter should have a perfect passband as shown in the Figure 2 But practically such a sharp cutoff at passband edges is not possible. Therefore practically we aim towards a response, which has as much sharper role-off as possible, so that channel selection is performed noiselessly. Chebyshev and elliptic filters provide very good response in this regard. Hence we select Chebyshev type of filter for our study and analysis as it provides satisfactory bandpass characteristics.
Figure 2 Chebyshev Type-II Filter Design Filter parameters are as shown below Order = 2; Sampling frequency Fs = 100 KHz; Fstop1 = 39 KHz; Fstop2 = 41 KHz; Astop= 60 dB Ing. Armando Alberto Cajahuaringa Camaco Input the above parameters to the respective places of Filter Design & Analysis Tool. After completing this click on Design Filter button. This creates the required filter .To observe the response (step or frequency or impulse) click on the respective icon of the toolbar. Toolbar also has icons to observe pole-zero plot, group delay, filter coefficients etc. Thus the obtained filter coefficients are as follows: Numerator (b) Denominator (a) 0.000062910740701 1.000000000000000 0.000000000000000 1.621131129004091 -0.000062910740701 0.999874178518599 For the above parameters magnitude response can be observed by clicking on corresponding icon of the toolbar. The corresponding frequency response is as shown below in Figure 3.
Figure 3 For the same above filter parameters MATLAB program is written in a M-file to create chebyshev type-II bandpass filter. The program is as follows. File name:cheby.m clc; clear all; close all;
As=60; %stopband attenuation wp1=3.8e+004; %lower cutoff frequency wp2=4.2e+004; %higher cutoff frequency n=1; %order fs=100000; %sampling frequency wn=[wp1 wp2]/(fs/2); %Nyquist frequency [b,a] = cheby2(n,As,wn); %compute filter coefficients [h,f]=freqz(b,a,fs/2); %compute frequency response mag=20*log10(abs(h)); %get magnitude response subplot (2,1,1); plot(f*(fs/2)/pi, mag);grid; %plot response with grid lines ang=angle(h); %get phase response subplot(2,1,2); plot(f*(fs/2)/pi,ang);grid; %plot response with grid lines
Run this program either by pressing F5 key on keyboard or select Run from debug menu. The obtained magnitude and phase response is as shown below in Figure 4 Ing. Armando Alberto Cajahuaringa Camaco
Figure 4 For both of the above filter designs, the corresponding filter realization structure of Direct Form 2 is as shown in Figure 5. This can be created using Filter Realization Wizard by inputting filter coefficients. From the frequency response curves (Figure 4) of the above filter we can analyze the filter. Thus the Chebyshev type-2 filter designed with n=1(implies order 2n=2) and pass band =2 KHz (implies 1 KHz from 40 KHz) has very sharp (like a pulse) passband and also not exactly centered at 40 KHz.Owing to this shift of passband either towards the left or right side of frequency domain, the center frequency may get attenuated or noise signals may creep through the filter resulting in a distorted output. Another possibility is suppose by some means frequency of input signal itself varies from its central value then filter may pass unwanted signals and it may attenuate the original signal itself creating a noisy output. This may due to the inconsistency of function generator. We cant say even crystal oscillator can produce exactly 40 KHz signal. It may vary a little (100 Hz) due to variation of temperature, pressure, applied voltage etc. Figure 5 Therefore we need a filter, which has a passband, so that even though center frequency varies from its value, the signal is reproduced faithfully at the output and all other unwanted signal frequencies are completely attenuated. We can meet the requirements by changing the filter parameters like order, pass band, edge frequency or stop band attenuation. But it is found that keeping order n=1 even though we increase Ing. Armando Alberto Cajahuaringa Camaco pass band range and decrease stop band attenuation, dont yield satisfactory result instead it just attenuated pass band itself. Therefore to improve the filter performance the only left option is to increase the filter order and this is what done in most of the practical cases. We adjust the pass band frequency so that around 500 to 800 Hz pass band with minimum attenuation is obtained. Using Filter Design & Analysis Tool we can do this and by noting down the filter coefficients we can realize filter structure. CHEBYSHEV TYPE-II FILTER DESIGN WITH INCREASED ORDER Filter parameter: n = 4 (2n = 4=> n =2) Fs = 100000Hz. Fstop1 = 38000Hz. Fstop2 = 41800Hz. Astop = 40dB. Let the file name given to this filter be filter40.fda Figure 6 The obtained magnitude response is as shown in Figure 6 and the corresponding filter coefficients are as follows, Numerator (b) Denominator (a) b(0)=0.010045097978992. a(0)=1.000000000000000. b(1)=0.031677960303578. a(1)=3.205603560877597. b(2)=0.044659670697279. a(2)=4.521600439016961. b(3)=0.031677960303578. a(3)=3.129988499837994. b(4)=0.010045097978992. a(4)=0.953386226509250. EFFECT OF TRUNCATION OF COEFFICIENT ON FILTER RESPONSE Digital signal processing algorithms are realized either with special purpose digital hardware or as programs for a general-purpose digital computer. In both cases the numbers and coefficients are stored in finite-length registers. Therefore, coefficients and numbers must be quantized by truncations or rounding before they can be stored. The following errors arise due to quantization of numbers, 1. Input quantisation error. 2. Product quantisation error. 3. Coeficiente quantisation error.
Ing. Armando Alberto Cajahuaringa Camaco 4. The conversion of a continuous time input signal into digital value produces an error, which is known as input quantization error arises due to the representation of the input signal by a fixed number of digits in the A/D conversion process. 5. Product quantization errors arise at the output of a multiplier. Multiplication of a and b bit with ab bit coefficient results a product having 2b bits. Since ab bit register is used, the multiplier output must be rounded or truncated to b bits, which produces an error. 6. The filter coefficients are computed to infinite precision in theory. If they are quantized, the frequency response of the resulting filter may differ from the desired response and sometimes the filter may fail to meet the desired specifications. If the poles of the desired filter are close to the unit circle, then those of the filter with quantized coefficients may lie just outside the unit circle, leading to the instability. The other errors arising from quantization are round off noise and limit cycle oscillations. It can be understood from the above points that quantization error due to A/D conversion process is difficult to minimize below certain limits in any sophisticated processor. Using higher sampling rate we can minimize this error. Using processors with higher word length registers can minimize product quantisation errors. As length of the operating registers become more and more error becomes less and less. If floating point arithmetic is supported in processor then this error can be eliminated to a very large extent. Now let us analyze the filter40.fda named filter for different truncated values. In this file, the coefficients obtained are 64-bit length (i.e. 16 decimal number excluding decimal point). Notice that these are the coefficients, which are obtained by designing the filter in Filter design & Analysis tool. To find out what is the effect of truncating the coefficient data, we use M-file program cheby.m. Here we directly feed the filter coefficients to the freqz command as shown below:
clc; clear all; close all; b=[b(0) b(1) b(2) b(3) b(4)]; %fill numerator coefficients a=[a(0) a(1) a(2) a(3) a(4)]; %fill denominator coefficients [h, f]=freqz (b,a,fs/2); If you dont put semicolon at the end of the line where numerator and denominator coefficients are written and you run the program, you can find that at the command window, these coefficients are rounded up to 4 th decimal point. The software itself automatically does the truncation of data. The resultant frequency response by this truncated data is same as that of obtained with non-truncated data with hardly noticeable differences. The rounding up of numerator and denominator to third decimal point causes below response:
Figure 7 The rounding up of numerator and denominator to second decimal point causes heavy variation in pass band attenuation as shown in Figure 8. Numerator (b) Denominator (a) 1. 1.00 2. 3.21 3. 4.52 4. 3.13 1. 0.95
Figure 8 Rounding up of filter coefficient to the first decimal point abruptly changes frequency characteristics of the filter. From the above discussion it follows that truncating the filter coefficients to 4 th decimal point yields good acceptable frequency characteristics and hence can be implemented in hardware. The filter structure for the above filter is as shown below in Figure 9.
Ing. Armando Alberto Cajahuaringa Camaco Figure 9 SIMULATING THE FILTER STRUCTURE To simulate the above filter structure, it has to be modified a little bit. First open Simulink Library Browser. Select and drag the Sine Wave block from the source library to the window where the structure is created. Similarly Scope is dragged from the Sinks library and the Mux is dragged from the Signals & Systems library. Substitute input by sine Wave block, output by Mux and Scope block. By double clicking on each block we can get the properties of each block. For example: double click on sine wave block. This will open a window wherein we can write frequency of the signal, signal voltage, sampling time etc. In the same way mux and scope can be configured. After connecting all these blocks click on start icon on the toolbar to start simulation. Options are there to pause the simulation, stop the simulation etc. We can also see the simulation status on simulink debugger window. Double click on the scope block. This opens the oscilloscope where we can observe the input and output waveforms. The study and analysis of simulation of the above filter structure as well as many other filter structures (like Cheby type-1, 2 Butterworth lowpass/highpass) are carried out successfully. One thing that is particularly noticeable is that for higher frequencies simulation of filter structure takes more time compared to simulation of filter structure at lower frequencies. Effect of truncation of coeffients can also be observed on the Scope and also works as the study has been done in earlier sections. References 1. Digital Signal Processing By Sanjit K.Mitra 2. Digital Signal Processing By P.Ramesh Babu 3. Digital Filters By T.J.Terrel And E.T.Powner 4. BASIC Digital Signal Processing By Gordon B. Lockart And Barry M.G.Cheetham 5. Digital Signal Processing By Alan V.Oppenheim And Ronald W.Schafer 6. DSP Microprocessors: Advances and Automotive Applications By Subra Ganeshan And Dr.Gopal Arvamudhan 7. www.mathworks.com