Mini Project 1: Estimate Parameters of a
Sinusoid
Prof. B.-P. Paris
ECE 201
Spring 2015
Problem Statement
In class, we have discussed in detail how you can determine the amplitude, frequency,
and phase from the plot of a sinusoidal signal. The objective of this mini project is to
automate this process. Specifically, you are to devise a procedure (really, a MATLAB
function) that processes samples of a sinusoidal signal and determines the amplitude,
frequency, and phase of that signal.
Deliverables
This is a group project; groups are assigned by the instructor. Each group must
deliver the following two work products:
- A MATLAB function (must be named analyzeSinusoid) that accepts
a sampled signal and a sampling rate as inputs and produces estimates
of amplitude, frequency, and phase as outputs. An example function is
provided (see below).
- A report in the form of a Powerpoint presentation. The report must not
exceed six slides and should document how you solved the problem. An
example report is provided (see below).
Material
To help you get started with this project, I am providing you with the following
material:
- A sample report that documents the example solution that I provide (see
below).
- Test data sets: There are three sets of test data that you can use to evaluate
your solution. The data sets are stored in MATLAB .mat files: test1.mat,
test2.mat, and test3.mat.
You need to store these files in your MATLAB working directory, then
you can load them with a command like load test1. Most importantly,
the test data contain a sampled signal (sig) and a sampling rate (fs) that
you can access after loading test data. Also included are the true values
for the paramters, true_amp, true_freq, and true_phase.
- An example MATLAB solution: the file analyzeSinusoid.m provides an
example solution. This is a reasonable, but not very good solution that is
intended to help you with the “mechanics” of this project.
It is critical that you do not modify the first line of this example in
your own solution and that your solution is stored under the same file
name (analyzeSinusoid). In other words, you will have to overwrite this
example function.
- A MATLAB scoring function (evalFunc) that tells you how well you are
estimating the parameters - smaller is better and the lowest possible score
is loaded with each test data set as minScore.
Assuming that you have saved the test data and the two MATLAB functions in
your MATLAB working directory, you can use them as follows. As you develop your
own solution, simply replace the example analyzeSinusoid.m file with your
own.
load test1; % loads test data; can also load test2 or test3
[amp, freq, phi] = analyzeSinusoid(sig, fs) % sig and fs were loaded above
true_amp, true_freq, true_phase % compare to true parameters
score = evalFunc(sig, fs, amp, freq, phi) % check your score
minScore % this is the minimum possible score
Schedule
The mini project will proceed according to the following schedule:
- Monday, January 28: Project assigned and groups announced.
- Wednesday, February 4: Draft project report to be presented to another
group.
You must prepare a Powerpoint report that describes how you plan to
solve this problem. You will present this plan to another group in class.
A copy of your groups report must be e-mailed to the instructor by the
start of class - include your group number on the subject line.
- Monday, February 9: Written (typed), constructive feedback must be
provided to the group that presented to your group.
Send a copy to the instructor by e-mail; make sure it is obvious which
group you’re commenting on.
- Wednesday, February 11: Deadline for submitting initial version of
MATLAB code.
I will provide detailed submission instructions separately.
- Friday, February 20 (at 11:59pm): Deadline to submit M-files.
- Sunday, February 22 (at 11:59pm): Final versions of your report and your
MATLAB code must be submitted through Blackboard - one submission
per group.
Grading
Your group’s score will depend on the following criteria:
- Report: the quality of your group’s report will count 40% towards your
grade. I will evaluate accuracy, correctness, presentation of the report, as
well as the originality of your solution.
- MATLAB code: The grade for your MATLAB code will depend on
the quality of your estimates. This is measured by the scoring function
described above. This component counts 40% towards your grade.
Bonus points will be awarded to the three best (lowest scoring) solutions
and the solution that runs fastest.
- Feedback to other group: the quality of the feedback you provide to the
group that presented to you counts 20% towards your grade.