[PDF] [PDF] Implementation of Discrete Fourier Transform - Semantic Scholar

Discrete Fourier Transform and Orthogonal Discrete Wavelet Transform in time -domain signals by using the developed Python program code are compared 



Previous PDF Next PDF





[PDF] A Taste of Python - Discrete and Fast Fourier Transforms - American

Once added to the code, we can call this function and pass in ant wave, and it will give us the Fourier Transform We can then import the plot package and plot the



[PDF] Implementation of Discrete Fourier Transform - Semantic Scholar

Discrete Fourier Transform and Orthogonal Discrete Wavelet Transform in time -domain signals by using the developed Python program code are compared 



[PDF] discrete Fourier transform

The discrete Fourier transform (DFT) operates on discrete data – Usually we have code: dft py http://docs scipy org/doc/numpy/reference/routines fft html ○



[PDF] Signals and Systems - Lecture 6: Fourier Analysis - Applied Concepts

y[n] → H(z = ejΩ) ejΩn as n → ∞ 21 / 40 Page 22 The Discrete Fourier Transform The DFT 



[PDF] Fourier Transform

Fourier transforms are useful for signal analysis, and are also an important tool for solving proximations with the trapezoidal rule is equivalent to the discrete Fourier a couple things: (1) I'm comfortable enough writing code in Python to do



[PDF] Lecture 0206 Discrete Fourier transforms

The source for this lecture is in SageMath kernel Jupyter notebook For more numpy for numerics, and scipy for discrete (fast) Fourier transforms Modern 



[PDF] Fourier series

FOURIER ANALYSIS using Python transform, discrete Fourier transform) Write Python code to compute and plot the Fourier coefficents ak and bk for the 



[PDF] Multirate Signal Processing, Multiresolution Frequency - TU Ilmenau

magnitude of the coefficient of the underlying FFT start the python script with In Python: scipy fftpack fft( ) Properties: Discrete in frequency, because of finite 



[PDF] Mini-Project 

2 jui 2020 · an algorithm, you must also include the code in your pdf submission Recall that the discrete Fourier transform of a length N vector/signal f is a If you're working with Python, you can load a wav file as a numpy array in the 



[PDF] EA Report - Laboratoire de Physique des Plasmas - École

3 1 4 Discrete Fourier transform The final goal was to be able to code Python functions that would do exactly the same kind of operations executed in the LFR 

[PDF] discrete low pass filter matlab

[PDF] discrete low pass filter simulink

[PDF] discrete low pass filter z transform

[PDF] discrete math symbols meaning

[PDF] discrete mathematics

[PDF] discrete mathematics books for computer science

[PDF] discrete mathematics for computer science

[PDF] discrete mathematics lecture notes ppt

[PDF] discrete mathematics problems and solutions pdf

[PDF] discrete mathematics solutions and answers pdf

[PDF] discrete mathematics syllabus

[PDF] discrete mathematics topics

[PDF] discrete time fourier series

[PDF] discrete time fourier transform

[PDF] discrete time fourier transform calculator

Tariq Javid Ali, Pervez Akhtar, Muhammad Faris, Idris Mala, Syed Saood Z ia Hamdard Institute of Engineering and Technology, Hamdard University, Kar achi-74800, Pakistan Computer Science Department, Usman Institute of Technology, Karachi-7530

0, Pakistan

Computer Engineering Department, SSUET, Karachi-75300, Pakistan tariq.javid@hamdard.edu.pk imala@uit.edu szia@ssuet.edu.pk 54123
1,2,3 4 5 2

Abstract

This paper presents implementation of

Discrete Fourier Transform and Orthogonal Discrete

Wavelet Transform in Python computer programming

language. The Fourier Transform is a fundamental signal processing tool whereas the Wavelet Transform is a powerful and advanced signal processing tool. Both have applications in numerous scientific and engineering disci plines. Our implementation aims to develop a deeper understanding of these transformations by presenting detailed coding steps to generate the frequency-domain and wavelet-domain outputs for selected example time-domain input signals. The results generated from developed program code are compared using built-in functions with similar matches have shown the successful implementation.

Python has emerged recently as a computer program

ming language of choice for science and engineering disciplines. Despite presence of famous powerful computer languages, for example C/C++/C# and Java, and mathemati- cal tools, for example MATLAB and MAPLE, this computer programming language is making its way towards new heights [1-2]. The language is open source with an easily understandable syntax and is supported by a large community of programmers all around the world. Recently, many courses have replaced their adoption of computer language by Python, for example [3] replaced Java with Python as the Python code is easier for the novice learner. The major strengths of this programming language are modularity and ability to integrate with different computer programming languages [4].

Discrete Fourier Transform (DFT) is a fundamental

signal processing tool. On the other hand, Discrete Wavelet Transform (DWT) is a powerful and advanced signal process

ing tool. Both tools have a wide range of applications in many scientific and engineering disciplines. These are implemented in almost all computer programming languages and mathe-

matical software tools. Therefore, learning to use application of DFT and DWT on time-domain input signals to generate corresponding frequency-domain and wavelet-domain representations is an established exercise for students in science, technology, engineering, and mathematics (STEM) programs. Use of computer programs and mathematical software tools is a common practice to perform lengthy calcu- lations. The purpose of this study is to explore how to learn fundamental and advanced mathematical formulations, for example DFT and orthogonal DWT, by using a prospective computer programming language. The work in this paper aims to strengthen the understanding of DFT by implement- ing circular convolution and Fourier transformation and also to strengthen the understanding of DWT by implementing orthogonal Wavelet transformation in Python. A step-by-step approach is presented which is useful for readers even if they are unfamiliar with this computer programming language. In addition, examples are presented to use Numpy [5] built-in Fast Fourier Transform (FFT) function to compute the DFT and PyWavelets [6] built-in function to compute the DWT. The resulting spectrum and scalogram from selected example time-domain signals by using the developed Python program code are compared with outputs using built-in functions. Similar matches show a successful implementation of both

DFT and DWT.

In this section, a review of related mathematical expres sions with corresponding matrix views is presented from [7-8]. This section and most of the examples used in this study are selected from this very useful reference. Journal of Independent Studies and Research - Computing Volume 14 Iss ue 1 Jan-June 20161

Implementation of Discrete Fourier Transform and

Orthogonal Discrete Wavelet Transform in Python

Keywords

DFT; DWT; FFT; Python; Convolution

I. INTRODUCTION

1 4 5

II. CONCEPTS AND MATHEMATICAL EXPRESSIONS

The circular convolution is closely related to DFT and

A. Discrete Fourier Transform

where H is called the circular convolution operator associated with hn. The result (Hx)n is also a length-N sequence. The related matrix view is given below.for any two length-N sequences x n = {x 0 , x 1 , ... , x N 1 } and h n = {h 0 , h 1 , ... , h N 1 }, it is defined as where H is a circulant matrix with hn as its first column. The

DFT of a length-N sequence xn is defined as

The inner product is sum of element-by-element multi- plication of two vectors. This means result of inner product is a scalar quantity. A sequence represents a signal or vector.

The inner product of two given sequences, g

n = {g 0 , g 1 g N 1 } and h n = {h 0 , h 1 , ... , h N 1 } is given by

B. Discrete Wavelet Transform

Journal of Independent Studies and Research - Computing Volume 14 Iss ue 1 Jan-June 20162 1 01 0 mod)(mod)( N kN k

NknkNknkn

xhhxHx(1) (2) 11 0

021201110

NNNN xx x hhhhhhhhh Hx (3)}1,,1 ...,0{,)( 1 0

NkWxFxX

N n knNnkk (4) 11 0 )1(112 2 11 111
NN NN NN NN xx x

WWWWFx

The IDFT of a length-N sequence is defined as

(5)}1,...,1,0{,1 1 0

NnWXNx

N k knNkn where. The related matrix view of IDFT is given below. knNjknN eW )/2( (6)X WWWW Nx N NN NN N N n 2 )1()1()1(2 11 111
1 (7) nnnnnnn hghghghg 1100

ZkZkknkknk

hgghgh (8)

The convolution of two sequences gn and hn is given by The J-level orthogonal DWT of a sequence xn and

IDWT are given by

where g (J) and h (l) are called scaling sequence and wavelets, respectively. The is called coarse projection or scaling coefficients whereas are called finer detail projections or wavelet coefficients. For 3-level, i.e., J = 3, both scaling and wavelet coefficients using (9) and (10) are given by )(J )(l (9) Zkgx ZnJ knnJ k J 2)( (10) },, ...2,1{, 2)( Jlhx Znl knnl k l (11) J lZkl knl k ZkJ knJ k n lJ ggx 1)( 2)()( 2)( nknn

Znknnk

hxhx )1( 2)1( 2)1( 11 nknn

Znknnk

hxhx )2( 2)2( 2)2( 22
nknn

Znknnk

hxhx )3( 2)3( 2)3( 33
nknn

Znknnk

gxgx )3( 2)3( 2)3( 33
The complete set of basis sequences for 3-level is given by For 3-level, Haar basis sequences using (12) and (13) are given by

The Haar basic sequences at J-level are given by

where is Kronecker delta sequence and is given by

Zkknknknkn

ghhh},,,{ )3( 2)3( 2)2( 2)1( 2 3321
(12) 12 0 2/)( 21
J k knJJn g (13) 12 212
0 2/)( 11 21
l ll kkn kknlln h otherwisen ,00,1 n where X k is called the spectrum of sequence x n and is a unit-modulus Eigen sequence. "... the DFT arises from identifying the unit-modulus Eigen sequences of the circular convolution operator ..." [7]. The related matrix view is given below. knNjknN eW )/2( n In following sections, above equations are implemented in the Python computer programming language. The Numpy module provides N-dimensional array data type, called ND array. The Python program code developed to implement the circular convolution is shown in Figure 1. It starts with comment lines which begin with number sign (#). The two code lines starting with import keyword find and initialize Python modules Numpy and Matplotlib.pylab and assign local names np and plt respectively. The Matplotlib [9] is a library for creating 2D plots in Python with pylab interface i.e., Matplotlib.pylab which provides functions similar to MATLAB.

The function

comp_circ_conv computes circular convo- lution and plots input sequence x n , filter h n , and resulting circular convolution (Hx) n by calling the function draw_se- qn_and_filt. In function comp_circ_conv, Python built-in function len is used to find length L and M of filter h n and input sequence x n respectively. This step is required to deter- mine the value N which is used for zero-padding both input tsequences.

The variables filtN, seqnN, and Hx are defined as

N-point numpy.ndarray sequences. These sequences are initialized with all elements set equal to zero. Both filtN and seqnN are assigned filt and seqn sequences up to length of filt, L, and length of seqn, M, respectively. This is accomplished using statement filtN[:L] = filt[:] which assigns first L mem- bers of filtN array to members of filt array. In this way, elements of filtN array are members of filt array from 0 to L-1, and remaining members are zeros from L to N-1. This is repeated for seqnN which after assignment has members of seqn from 0 to M-1, and zeros from M to N-1. Note, the indexing in Python follows C/C++ which starts from 0, instead of 1 as in MATLAB. This means members of an N-point array are accessed using index from 0 to N-1.

In first example, the function

comp_circ_conv input arrays are x n = {4, 5, 6, 2} and h n = {0.5, 2, 0.5} which are assigned to arrays seqn and filt, respectively. These arrays are III. PRELIMINARY IMPLEMENTATION assigned to new arrays seqnN = {4, 5, 6, 2, 0, 0} and filtN = {0.5, 2, 0.5, 0, 0, 0}, refer Figure 1 for plots of zero-padded input sequences. The filtN array is flipped and rolled by using statements filtNflip = filtN[::-1,...] and filtNflip = np.roll(filt- Nflip,1) respectively. The output array filtNflip after execu- tion of these two statements is equal to {0.5, 0, 0, 0.5, 2}. At this point, first row of (2), i.e., {h 0 , h 5 , ... , hquotesdbs_dbs17.pdfusesText_23