#include "graph.h"
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define XDIM 320
#define YDIM 320
float fX[XDIM + 1], fY[YDIM + 1];
void main (void)
{
/*
******** PROGRAM NO.1 DIGITAL BANDPASS FILTER ********
*/
int iCount;
clearscreen (_GCLEARSCREEN);
printf ("PROGRAM l: Digital bandpass fi1ter\n"); printf ("Press any key to start...\n\n");
/*** GENERATE INPUT SIGNAL, AND LOAD INTO ARRAY X **/
for (iCount = 1; iCount <= XDIM; iCount++)
fX
[iCount
] = sin (3.141593 * (float)iCount
* 0.05 + 0.0005 * (f1oat
)iCount
));
/**** ESTIMATE OUTPUT SIGNAL OF RECURSIVE FILTER ***/
fY[l] = 0.0;
fY[2] = 0.0;
for (iCount = 3; iCount <= YDIM; iCount++)
fY[iCount] = 1.5 * fY[iCount - 1] - 0.85 * fY[iCount — 2] + fX[iCount];
/**** PLOT INPUT AND 0u·1·1>UT SIGNALS ON SCREEN ******/
_setvideomode( _MRES16COLOR );
for (iCount = 1; iCount <= XDIM; iCount++)
{
_moveto (iCount, 50);
_lineto (iCount, (int)(50.0 - fX[iCount] * 25.0 + O.5));
_moveto (iCount, 150);
_lineto (iCount, (1nt)(150.0 - fY[iCount] * 4.0 + O.5));
}
_setvideomode( _DEFAULTMODE );
}
I2luY2x1ZGUgImdyYXBoLmgiCiNpbmNsdWRlIDxjb25pby5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPG1hdGguaD4KCiNkZWZpbmUgWERJTSAzMjAKI2RlZmluZSBZRElNIDMyMAoKZmxvYXQgZlhbWERJTSArIDFdLCBmWVtZRElNICsgMV07Cgp2b2lkIG1haW4gKHZvaWQpCnsKLyoKKioqKioqKiogUFJPR1JBTSBOTy4xIERJR0lUQUwgQkFORFBBU1MgRklMVEVSICoqKioqKioqCiovCgppbnQgaUNvdW50OwpjbGVhcnNjcmVlbiAoX0dDTEVBUlNDUkVFTik7CnByaW50ZiAoIlBST0dSQU0gbDogRGlnaXRhbCBiYW5kcGFzcyBmaTF0ZXJcbiIpOwpwcmludGYgKCJQcmVzcyBhbnkga2V5IHRvIHN0YXJ0Li4uXG5cbiIpOwpnZXRjaCgpOwoKLyoqKiBHRU5FUkFURSBJTlBVVCBTSUdOQUwsIEFORCBMT0FEIElOVE8gQVJSQVkgWCAqKi8KCmZvciAoaUNvdW50ID0gMTsgaUNvdW50IDw9IFhESU07IGlDb3VudCsrKQoJZlhbaUNvdW50XSA9IHNpbiAoMy4xNDE1OTMgKiAoZmxvYXQpaUNvdW50ICogMC4wNSArIDAuMDAwNSAqIChmMW9hdClpQ291bnQpKTsKCi8qKioqIEVTVElNQVRFIE9VVFBVVCBTSUdOQUwgT0YgUkVDVVJTSVZFIEZJTFRFUiAqKiovCgpmWVtsXSA9IDAuMDsKZllbMl0gPSAwLjA7Cgpmb3IgKGlDb3VudCA9IDM7IGlDb3VudCA8PSBZRElNOyBpQ291bnQrKykKCWZZW2lDb3VudF0gPSAxLjUgKiBmWVtpQ291bnQgLSAxXSAtIDAuODUgKiBmWVtpQ291bnQg4oCUIDJdICsgZlhbaUNvdW50XTsKCgovKioqKiBQTE9UIElOUFVUIEFORCAwdcK3McK3MT5VVCBTSUdOQUxTIE9OIFNDUkVFTiAqKioqKiovCgpfc2V0dmlkZW9tb2RlKCBfTVJFUzE2Q09MT1IgKTsKCmZvciAoaUNvdW50ID0gMTsgaUNvdW50IDw9IFhESU07IGlDb3VudCsrKQp7CglfbW92ZXRvIChpQ291bnQsIDUwKTsKCV9saW5ldG8gKGlDb3VudCwgKGludCkoNTAuMCAtIGZYW2lDb3VudF0gKiAyNS4wICsgTy41KSk7CgoJX21vdmV0byAoaUNvdW50LCAxNTApOwoJX2xpbmV0byAoaUNvdW50LCAoMW50KSgxNTAuMCAtIGZZW2lDb3VudF0gKiA0LjAgKyBPLjUpKTsKfQoKZ2V0Y2goKTsKCl9zZXR2aWRlb21vZGUoIF9ERUZBVUxUTU9ERSApOwoKfQoK