Introduction to Matlab Programming with Applications

Location: Room 108, 德田館
Time: 1900 ~ 2200, Wednesday and Saturday


``All science is dominated by the idea of approximation.''
-- Bertrand Russell (1872-1970)

Goal

This short course is designed for the students who want to learn Matlab programming without any experiences before. The students will be introduced to Matlab features and syntaxes. Besides, the fundamentals of programming concepts are delivered with elegant algorithms. You are expected to be capable to implement programs with Matlab independently after this class. Moreover, I expect that you could feel more confident of learning more programming languages and dealing with advanced topics in the future.

Prerequisites

Text

References

Matlab

Linear algebra

Numerical methods and analysis

Data mining and machine learning

Artificial neural networks and deep learning

Optimization

Simulink

Interesting materials

Misc

Additional reading

Overview

The major topics covered in the short course, if time permitting, are listed below for your reference.

Essentials

Applications

Schedule [ 236, 237, 238, 242, 244, 245, 247, 249, 251, 252, 253, 254, 256, 258, 260, 261, 262, 263, 264, 265, 266, 268, 272, 273, 275, 277, 279, 280, 281, 282, 283 ]

Date Summary
2017.7.12 programs, cpu, memory, memory hierarchy, programming languages (machine code, assembly code, high-level language), computational solution, algorithms, variables, assignment operator (=), binary system, data types (integers/floating points), numerical errors, scalars;
2017.7.15 arrays, cells, structures, vectorization, element-by-element operators, rational operators (<, ==, >), logical operators (~, &, |), selections (&&, ||, if-elseif-else, switch-case-otherwise), error and error handling (try-catch), for loops, random number generators (LCG);
2017.7.19 while loops, jump statements (break, continue), nested loops, analysis of algorithms;
2017.7.22 performance analysis and speedup, functions;
2017.7.26 call stack, variable scope, primary/subfunction, anonymous functions, recursion;
2017.7.29 (no class);
2017.8.2 midterm; 2D plots, annotation, PROJECT: European call option prices (see BlackScholesModel.m, EuroCall_MonteCarloSimulation.m, option pricer, Black–Scholes formula), graphics objects, get/set methods, 3D plots, interpolations; feedback;
2017.8.5 file I/O (exercise);
2017.8.9 string and regular expressions (raw_data.zip; more exercises can be found: HW09.zip), matrix computation, system of linear equations, Gauss elimination, 2D Laplace PDE boundary value problem by finite difference, least square error method (also see least-squares fitting of circles and ellipses);
2017.8.12 polynomials, polynomial fitting, overfitting issue, eigenvalue problems (see The World's Largest Eigenvalue Problem), singular value decomposition (see image compression by SVD, svd_image_compression.m, SVD applications), Simulink tutorial, gui design;
2017.8.16 final project demonstration; PROJECT: Blurring and edge detection by using FFT (see Discrete Fourier Transform, imageProcessing_LowHighPass.m), PROJECT: Machine learning (see The SVM classifier, dataset), PROJECT: k-mean (see k-mean by NYU, Clustering and K-means by UCLA, Lecture 13: k-means and mean-shift clustering by Stanford), PROJECT: Finite element method (see 1D heat conduction, Introduction to Finite Element Analysis (FEA)), PROJECT: Portfolio management (see FTSE Global Equal Risk Contribution (ERC) Index Series, Equal Contributions to Risk and Portfolio Construction, Portfolio Risk Budgeting); feedback for midterm, feedback for final; email: d00922011@ntu.edu.tw

Sample Code

Gradebook