EE313 Linear Systems and Signals - Mini Project 2 - Fall 2026

Mini-project #2 simulates the transmission and reception of satellite signals.

This project is a sequel to

Introduction

In this mini-project, a cell phone receives three satellite communication signals in different frequency bands. Each satellite signal x(t) carries an amplitude modulated audio signal m(t), i.e.
x(t) = m(t) cos(2 pi fc t)
The three satellite communication signals add together when arriving at the cell phone's antenna. The cell phone will then separately demodulate each satellite communication signal by

FIR Nulling Filter

We will use two FIR nulling filters to attentuate the two satellite signals interfering with the desired satellite signal.

In Lecture 10 on Z-transforms, we disussed the connection between the z-transform X(z) and the Discrete-Time Fourier Transform X(ej w) on slide 10-9. In the complex zplane, ej w is the unit circle because the magnitude of ej w is one and the phase varies with w which is real-valued. When ej w is in the region of convergence, we can convert a z-transform X(z) into a Fourier transform by substituting z = ej w.

Also in Lecture 10, we analyzed the frequency response of an L-point averaging FIR filter on slides 10-10 and 10-11. This filter is a lowpass filter with a null bandwidth of 2 pi / L. Null bandwidth means the smallest positive frequency where the magnitude response goes to zero. In addition, the averaging filter removes frequencies

2 pi k / L
where k = 1, 2, ..., L-1. In total, L-1 frequencies are zeroed out. When L is odd, half of zeroed-out frequencies are positive and the other half are negative. When L is even, the discrete-time frequency at pi is zeroed out; of the remaining L-2 zeroed-out frequencies, half are positive and half are negative.

To remove a specific positive discrete-time frequency w0, we would need a three-point FIR filter where the roots of the transfer function for the FIR filter are at

z0 = exp(j w0) and z1 = exp(-j w0)
The transfer function becomes
H(z) = (1 - z0 z-1) (1 - z1 z-1) = 1 - (z0 + z1) z-1 + z-2
By replacing the formulas for z0 and z1,
H(z) = 1 - 2 cos(w0) z-1 + z-2
This means that filer coefficients are
1, -2 cos(w0), 1

Amplitude Modulation

Amplitude modulation varies the amplitude of a carrier signal in a way that is proportional to the message m(t) to be conveyed:
x(t) = m(t) cos(2 pi fc t)
This produces beat frequencies.

Beat Frequencies

Beat frequencies occur when two sinusoidal signals of different frequencies are multiplied together:
v(t) = cos(2 pi f1 t) cos(2 pi f2 t) = 0.5 cos(2 pi (f1 + f2) t) + 0.5 cos(2 pi (f1 - f2) t)
Two positive frequencies and their negative frequency counterparts are produced:

Analysis of Amplitude Modulation

Let's assume that the message signal has frequencies from -fmax to fmax. Amplitude modulation
x(t) = m(t) cos(2 pi fc t)
means that for every positive frequency component f0 in m(t), there will be two positive frequencies in x(t) at
  • fc + f0
  • fc - f0
  • and their negative counterparts
  • -fc - f0
  • -fc + f0
  • assuming fc > fmax.

    The spectrum of x(t) consists of two bands:

    Put another way, the frequency content in m(t) is shifted right in frequency by fc and also shifted left in frequency by fc.

    Amplitude Demodulation

    Amplitude demodulation consists of amplitude modulation followed by lowpass filtering.

    What happens when we modulate x(t) by the same carrier frequency fc?

    y(t) = x(t) cos(2 pi fc t) 
    
    Yes, we'll get another round of beat frequencies:
    y(t) = m(t) cos(2 pi fc t) cos(2 pi fc t)
    y(t) = m(t) cos2(2 pi fc t) 
    y(t) = 0.5 m(t) + 0.5 m(t) cos(2 pi (2 fc) t)
    

    As we discovered above, the frequency content in x(t) is shifted right in frequency by fc and also shifted left in frequency by fc. This means that y(t) has the following frequency bands:

    We apply a lowpass filter to By passing frequencies from -fmax to fmax, we recover the message signal.

    In the recovered message signal, we'll hear the message signal plus attenuated frequencies from 2 fc - fmax to 2 fc + fmax and possibly noise and other impairments.

    We'll need to multiply the recovered message signal by two compensate the loss of a factor of two because we modulated twice:

    y(t) = 0.5 m(t) + 0.5 m(t) cos(2 pi (2 fc) t)
    

    Lowpass Filter Design

    For tuneup #7, we used an averaging FIR filter for the lowpass filter. From the handout Designing Averaging FIR Filters, the bandwidth for the averaging filter is 2 pi / L where L is the number of filter coefficients. We want to pass message frequencies up to fmax which is 520 Hz in Tuneup #7. Tuneup #7 used a sampling rate fs of 8000 Hz:
    2 pi / L = 2 pi fmax / fs
    
    which means
    L = fs / fmax
    
    rounded down to get an integer value. For Tuneup #7, L = 15. For the Mini-Project, please design a better (more selective) lowpass filter.

    Matlab Code and Sound Files

    Here are Matlab and sound files that will help you complete the project, which you can download the above files in a single zip file miniproj2code.zip: On your laptop, create a directory/folder in your MATLAB directory called miniproj2 and place the above files there. Then, add the directory/folder to your MATLAB path:
    addpath("LOCATION");
    
    The LOCATION might be something like
    C:\Users\Brian\Documents\MATLAB\miniproj2
    
    That way, MATLAB can find the new Matlab functions plot_freqDomainAnalysis and plot_timeDomainAnalysis.

    MATLAB function plot_freqDomainAnalysis

    % FUNCTION plot_freqDomainAnalysis(s,fs,sType)
    % PURPOSE:
    %   This function plots the frequency represntation and spectrogram of a
    %   given signal.
    %
    % INPUTS:
    %   1)  s, a vector of size (N x 1), where N is the number of elements
    %          s represents the signal to analyze%
    %   2) fs, a scalar
    %          fs is the sampling frequency that signal s was generated with
    %   3) sType, a string that describes the signal s
    %             OPTIONAL INPUT TO FUNCTION
    % OUTPUTS:
    %   none (generates 2 plots)
    %
    % EXAMPLE CALLS TO FUNCTION...
    %   1) plot_freqDomainAnalysis(s,fs)
    %   2) plot_freqDomainAnalysis(s,fs,"Vibrato")
    

    MATLAB function plot_timeDomainAnalysis

    % FUNCTION plot_timeDomainAnalysis(s,fs,sType)
    % PURPOSE:
    %   This function plots the time-domain representation of a given signal.
    %
    % INPUTS:
    %   1)     s, a vector of size (N x 1), where N is the number of elements
    %             s represents the signal to analyze
    %             REQUIRED INPUT TO FUNCTION
    %   2)    fs, a scalar
    %             fs is the sampling frequency that signal s was generated with
    %             REQUIRED INPUT TO FUNCTION
    %   3) sType, a string that describes the signal s
    %             OPTIONAL INPUT TO FUNCTION
    % OUTPUTS:
    %   none (generates 1 plot)
    %
    % EXAMPLE CALLS TO FUNCTION...
    %   1) plot_timeDomainAnalysis(s,fs)
    %   2) plot_timeDomainAnalysis(s,fs,"Vibrato")
    

    Tips and Tricks

    Zooming into plots In the command window, you zoom into plots by first selecting which figure number and then change the range of the y-axis. Here's an example of zooming into a spectrogram plot from 0 to 1 kHz:
    figure(4);
    ylim( [0 1] );
    
    Each figure in the Matlab figure management window has a number associated with it.

    Mystery Signal. The mystery signal is the signal being received by the user. The mystery signal contains the wireless transmissions from the three satellites in different frequency bands.

    References. Please add the mini-project assignment and link as a reference.

    Homework and Mini-Project Guidelines

    Please write a self-contained narrative report for the mini-project report. Assume that the reader (grader) does not have access to the mini-project assignment. The audience for the report is the other students in the class. Please do not use generative AI tools to write the narrative or generate code used in the report.

    Here are some things you should follow for all assignments.

    Amount of work to show:

    1. An explanation should be given for every single answer. Answers written without explanation will lose two-thirds of the points allotted for that part.
    2. Only "standard" formulas (like Euler's formula, trigonometric formulas, etc.) can be used without a reference. If you're using something non-standard, then please put a reference to the formula number in the book, or whatever source you got it from. Just using the final result of a similar problem done in the class, and omitting the intermediate steps, is not okay. You have to show show your work.
    3. There shouldn't be big jumps in logic from one step to the next.
    4. For everything, expect to show at least one intermediate step between the first line and the answer. Even if it seems unnecessary to you, please err on the side of caution. Things that seem obvious to you when you're writing the solution are not quite so obvious for someone reading it.
    5. If you're in any doubt about how much work to show, please ask the instructor or the teaching assistant.

    MATLAB source code guidelines:

    1. Put a comment before the solution of each part, telling the question number of the solution.
    2. If you're using complicated logic, leave a comment telling what that block of code is supposed to do.
    3. Use variable names that related to their meaning/use.
    4. Avoid using two different variables for the same thing.
    5. Try to avoid using "magic numbers" in the code. If you're using a number, write a comment telling me how you derived it.
    6. Make sure that your code will compile & run in a clean workspace; i.e., one without any variables present. Use a clear all; at least once before submitting it.
    7. No marks will be deducted based on the efficiency of the code unless the problem asks you to write efficient code.

    Technical points:

    1. Merge all the files together into one PDF file.
    2. Please adjust the contrast, exposure etc., to get a good scan quality so that the TA can easily read what you write. Take extra care to get a good scan for parts written in pencil.
    3. For the MATLAB code you write for an assignment, please copy the code into Word or include a screenshot showing the code. Do not submit handwritten code.
    Other things:
    1. All plots must have axis labels, with units.
    2. Final answers must be boxed, or underlined or otherwise differentiated from the rest of the solution.
    3. All final answers must have units, if they exist.
    4. Read the questions carefully.
    5. Try to answer all parts of a question together. If the solution to some parts of a question is written elsewhere, then leave a note telling the reader where to find it.
    Organization of a mini-project report:

    Please write a self-contained narrative report. The audience is someone who has taken the equivalent of this class. The report should provide references to the textbook and other sources as needed. Please refer to the hints above, which apply to homework assignments and mini-project reports, as well as the following additional guidelines for mini-project #2:

    1. Introduction - introduce the purpose of this mini-project and provide an overview of what their report will discuss. 6 points.
    2. Filtering out Unwanted Sigals and Noise - 36 points
    3. Demodulation - 27 points
    4. Conclusion - discuss any insights or knowledge gained as a result of completing the mini-project. 10 points.
    5. References - 3 points
    6. Code - 12 points
    7. Audio files - 6 points
    The written report will be graded on responses to the analysis questions, clarity, and formatting. This mini-project report is something that you could bring with you on interviews to show as an example of your work. Here are example mini-project #2 reports written by the instructors:


    Last updated 10/29/26. Send comments to bevans@ece.utexas.edu.