Wednesday, September 29, 2010

Class: 9/29/2010

  • DTFT-like plots using the DFT
  • DFT symmetries
  • Using taper windows to reduce spectral leakage
  • Homework due Friday

Monday, September 27, 2010

Class: 9/27/2010

  • Four-way decomposition of a signal and the DFT.
  • Matrix representation of the DFT.
  • DFT example illustrating spectral leakage.
  • DFT equal to samples of DTFT of the same finite length signal.

Friday, September 24, 2010

Class: 9/24/2010

  • Derived cyclic time reversal property of DFT.
  • Derived modulation property of the DFT.
  • Looked at cyclic convolution examples in Matlab.
  • Cyclic even and odd sequences.
  • Used 10-point DFT of cosine to illustrate DFT properties of the DFT including spectral leakage due to time-domain truncation of infinite length signal.

Student question: review transforms

Q: "I would also request a review of the material we have covered so far.  I am getting confused about what and how each of the transforms are different than each other and why we need them."

A: About the transforms, please see page 1 of the transforms notes posted on the Resources page.  This picture was provided to help all of us keep these transforms straight in our mind.  So far, we have talked about the CTFT and CTFS (briefly) and the DTFT and DTFS in more detail.  We are now starting to talk about the DFT.  Later in the semester we will discuss the FFT and the z-transform.  Which transform you use depends on situation.  If you are analyzing a continuous time signal or system, use the CTFT.  If the signal is periodic, then the CTFT does not really exist, but can be obtained by first expanding the signal in a Fourier series (CTFS) and then transforming using the CTFT.  On the other hand, if you are analyzing a discrete-time signal or system, use the DTFT.  If the signal is periodic (or a power signal), then the DTFT does not exist at some frequencies.  Delta functions are used in expressing the DTFT of these signals.  Fourier series expansions can be used for periodic signals.  We have defined the DFT of a finite length signal as the DTFS of the periodic signal obtained by periodically replicating the given signal.

Wednesday, September 22, 2010

Class: 9/22/2010

  • Discussion of Lab 3 (including demo)
  • Lab 2 due date extended to Friday
  • Introduced the DFT as one period of the DTFS in both time and frequency
  • Started discussing properties of the DFT

Monday, September 20, 2010

Filter Code

Dr. Gunther,
Have you posted the filter code that you showed us in class last week. I couldn't find it on the website.

Class: 9/20/2010

  • Discrete-time Fourier series (DTFS) examples
  • Periodic replication in the time-domain leads to sampling in the frequency domain

Friday, September 17, 2010

Class: 9/17/2010

  • Impulse response and frequency response (magnitude and phase) in discrete-time.
  • Discrete-time Fourier series (DTFS) introduction

Wednesday, September 15, 2010

Class: 9/15/2010

  • With the DTFT, multiplication in time corresponds to circular convolution in frequency.
  • Worked several examples of circular convolution.

Friday, September 10, 2010

Class: 9/10/2010

Discussed three classes of signals (absolutely summable, energy and power) and the characteristics of the DTFT of these classes of signals.

C code to evaluate the magnitude response of an FIR filter was reviewed.  The code appears on the page with the assignment.

Class: 9/8/2010

The programming assignment was discussed.  A procedure for computing the frequency (magnitude) response was discussed.

Introduced the DTFT and discussed some of its properties.

Wednesday, September 8, 2010

Problem 2.20

So after computing all of the parts for this problem, you get the sam digits used for each operation. Is there a particular lesson peratining to DSP that we should learn from this?

Tuesday, September 7, 2010

Question about filtering program

The following question came to me in e-mail.

"With regards to the FIR filter class that we are writing: Are we expected to design the class so that it polls a real-time value and produces a filtered signal "On the fly", or is it sufficient for the class to accept a pre-made input signal in the form of a large buffer and return the filtered form of that signal in another buffer?"

I want to respond to several points raised in the question above.
  • There is no requirement to write a class for this assignment.  You can you whatever data structure you like.  However, the assignment was to write two functions: one that implements convolution using a shift buffer and one that implements convolution using a circularly indexed buffer.
  • As far as what gets passed into and out of the function, that depends on the data structure you use.  For example, if you use a class structure and the class has member arrays for the filter coefficients and data buffer, then you do not need to pass these into the member functions that perform convolution.  On the other hand, if you are using straight C, then you may need to pass the filter coefficient and data arrays into the function.  Other alternatives are also possible.  Examples are given below.
=========================
// C++ class example
class fir {
private:
   float *h; // coefficients
   float *b; // buffer
public:
   void conv1(float *inbuff, float *outbuff, int len);
   void conv2(float *iobuff, int len);
};
// The conv1 function passes an array of values in and
// receives an array of values out of the function.
// The length of the input and output arrays is "len".
// The conv2 function passes a single array.  The values
// on the way in are the inputs and the values coming
// out are the outputs with the inputs being overwritten.

==========================
// C example
float *h; // coefficients
float *b; // coefficients

void conv1(float* inbuff, float *outbuff, int len, float *h, float *b, int num);

// In this example, the filter coefficients and the
// data buffer have to be passed into the function.
// The length of these two arrays is "num".

==========================
// As a third example, you could use a C structure
// to hold all the information associated with a filter:
// the filter coefficients, the buffer, and the length.
// Then the structure could be passed into the function
// as a single entity instead of passing in all the elements
// separately.

Friday, September 3, 2010

Class: 9/3/2010

Topics discussed in class.
  • Sampling and aliasing of sinusoidal signals.
  • Discrete time convolution
  • Simple low pass filter design by IDTFT of the desired response followed by truncation.
  • CTFT, CTFS, CTFT of periodic signals (Hint: use the CTFS expansion).

Wednesday, September 1, 2010

Homework 1

Just wanted to clarify after our discussion in class, that the homework problems are still due Friday?

Class: 9/1/2010

The following were discussed in class today.
  • Homework assignment 1 and Lab assignment 1 will be due next week, not this Friday.
  • Discussed the differences between sin/cosine/complex exponential functions in continuous time and discrete time.
  • DT frequencies are limited to the fundamental range -1/2 <= f < 1/2.
  • Sinusoids are periodic when the frequencies are rational.
  • The "envelope" of a sinusoidal signal appears periodic for any frequency.
  • The period of a discrete time sinusoid is not necessarily the reciprocal of the frequency.
  • The period is the denominator in f=K/N when the fraction is reduced.
  • Aliasing of frequencies outside the fundamental range.
  • Sampling of sinusoidal signals.
  • Discrete time convolution.  Shift register (delay line) versus circular buffer.
  • Designing simple low pass filters.