Introduction to Matlab - VLSI Signal Processing Lab

Download Report

Transcript Introduction to Matlab - VLSI Signal Processing Lab

Introduction to Matlab
吳家揚
VLSI Signal Processing Lab, NCTU
3/1, 2014
*source: “張智星, Matlab 程式設計與應用, 清蔚科技出版”
Outline





Introduction
Basic operations
Graphics
Filter design
On-line resources
Introduction

Matlab = MATrix LABoratory



特色




作者:Cleve Moler
由 MathWorks 於1984年推出
強力數值運算能力(超強計算機)
完整矩陣運算指令
豐富的toolbox以及函式庫
應用



動態系統模擬
數位訊號處理
… (各種科學計算)
Environment




Command window
Workspace window
Current directory
Command history
Outline





Introduction
Basic operations
Graphics
Filter design
On-line resources
基本運算

一般數學符號運算

在MATLAB 命令視窗(Command Window)內的提示符號(>>)之後輸
入運算式,並按入 Enter 鍵即可。例如:
>> x = (5*2+3.5)/5
x=
2.7000

若不想讓 MATLAB 每次都顯示運算結果,只需在運算式最後加上分號(;)
即可,例如:
>> x = (5*2+3.5)/5;

若要顯示 x 的值,直接在command line 輸入 x
>> x
x=
2.7000

常見運算元


+, -, *, /, ^(指數)
Note: ‘%’ 代表後面的敘述為註解
查詢命令

help – 查詢命令用法 (單機,簡易版)


>> help sin
SIN Sine of argument in radians.
SIN(X) is the sine of the elements of X
...
doc – 網路查詢命令用法 (通常有較詳細說明)

>> doc sin
... (請自己試試看)

lookfor – 尋找指令的 keyword
>>
help sin
(列出所有相關結果)
變數使用與命名規則




第一個字母必需是英文字母。
字母間不可留空格。
最多只能有 31 個字母,MATLAB 會忽略多餘字母(在 MATLAB 第
4 版,則是 19 個字母)。
MATLAB 在使用變數時,不需預先經過變數宣告(Variable
Declaration)的程序,而且所有數值變數均以預設的 double
precision floating-point資料型式儲存。
向量及矩陣

MATLAB 中的變數還可用來儲存向量及矩陣以進行各種運算,例如:

N 維向量 (row vector)




Column vector



>> s = [1 3 5 2];% 注意 [ ] 的使用,及各數字間的空白(或逗號’,’)間隔
>> t = 2*s+1
t = 3 7 11 5
>> s = [1; 3; 5; 2] % 以分號 ‘;’ 間隔
s=
1
2
3
4
N-by-M矩陣

A = [1 2 3 4; 5 6 7 8; 9 10 11 12]; % 建立 3×4 的矩陣 A
矩陣索引

索引

矩陣 A 中,位於第 i 橫列、第 j 直行的元素可表示為 A(i, j)


MATLAB 中,所有矩陣的內部表示法都是以直行為主的一維向量



i 與 j 即是此元素的下標(Subscript)或索引(Index)
A(i, j) 和 A(i+(j-1)*m) 是完全一樣的~m為矩陣A的列數
我們可以使用一維或二維下標來存取矩陣
範圍索引

冒號 (colon) ‘:’

代表所有元素


A(1, :) – 第一列的 row vector
選取範圍


A(1, 3:5)
3:5 (代表 3, 4, 5)
矩陣索引及下標
矩陣運算


矩陣的加減與一般純量(Scalar)的加減類似
相加或相減的矩陣必需具有相同的維度




>>A = [12 34 56 20];
>>B = [1 3 2 4];
>>C = A + B; %C = 13
37
58
24
矩陣與純量可以直接進行加減,MATLAB 會直接將加減應用到每一個
元素


>> A = [1 2 3 2 1] + 5
A=6 7 8 7 6
矩陣運算 (cont’d)

純量對矩陣的乘或除,可比照一般寫法




欲進行矩陣相乘,必需確認第一個矩陣的直行數目( Column
Dimension) 必需等於第二個矩陣的橫列數目(Row Dimension)





>> A = [123 , 442];
>> C = A/3; % C = 41.0000 147.3333
>> B = 2*A; % B = 246 884
A = [1; 2];
B = [3, 4, 5];
C = A*B; % C =
3
6
4
8
5
10
矩陣的除法,常藉由反矩陣或解線性方程式來達成
矩陣運算 (cont’d)

Operator 之前加上一個句點,MATLAB 將會執行矩陣內「元素對元
素」(Element-by-element) 的運算










只適用相同大小的矩陣或純量(scalar)運算
>> A = [1, 2];
>> B = [3, 4];
>> A .* B
ans =
3 8
與正常矩陣乘法比較
>> A * B’
ans =
11
常用之運算函式

MATLAB 是一個科學計算軟體,因此可以支援很多常用到的數學函數






>> y = abs(x) % 取 x 的絕對值
>> y = sin(x) % 取 x 的正弦值
>> y = exp(x) % 自然指數 exp(x)
>> y = log(x) % 自然對數 ln(x)
MATLAB 也支援複數運算,通常以 i 或 j 代表單位虛數
有一些函數是特別針對向量而設計





>> y = min(x) % 向量 x 的極小值
>> y = max(x) % 向量 x 的極大值
>> y = mean(x)% 向量 x 的平均值
>> y = sum(x) % 向量 x 的總和
>> y = sort(x) % 向量 x 的排序
特殊矩陣
指令
說明
zeros(m, n)
產生維度為m x n,構成元素全為0的矩陣
ones(m, n)
產生維度為m x n,構成元素全為1的矩陣
eye(n)
產生維度為n x n,主對角線為1,其餘元素全為0的單位矩陣
pascal(n)
產生維度為n x n的Pascal矩陣
vander(1:n)
產生維度為n x n的Vandermore矩陣
hilb(n)
產生維度為n x n的hilbert矩陣
rand(m, n)
產生維度為m x n的亂數矩陣,亂數值[0, 1],uniform distribution
randn(m, n)
產生維度為m x n的亂數矩陣,μ=0, σ=1, normal distribution
magic(n)
產生維度為n x n的矩陣,其任一行、列、對角的和均相等
Hint: 請善用 help, doc 查詢
Outline





Introduction
Basic operations
Graphics
Filter design
On-line resources
Plot

Data



>> x = 0 : 0.1 : 2*pi;
>> y = sin(x);
PLOT

plot(y)
% x = 0, 0.1, 0.2, ... , 6.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
10
20
30
40
50
60
70
Plot

plot(x, y)

指定x軸的數值
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
Plot

plot(x, y, S);
1
S
顏色
數值樣式
連線
0.8
b
藍
g
綠
r
紅
etc ...
...
0.6
0.4
0.2
o
0
x
-0.2
+
-0.4
etc...
-0.6
-
實線
:
細虛線
-.
實線、點
--
粗虛線
-0.8
-1
0
1
2
3
plot(x, y, ‘r*;’);
4
5
6
7
Multi-Data Plot

Method I:

plot(x1, y1, x2, y2, ...)

e.g.
>> y = sin(x);
>> z = sin(x + pi/4);
>> plot(x, y, x, z);




Method II:



>> plot(x, y, ‘b’);
>> hold; % 維持目前輸出
圖形不變
>> plot(x, z, ‘g’);
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6
7
圖形標示



title(‘title: sine wave’)
xlabel(‘水平軸’)
ylabel(‘垂直軸’)
axis([xmin xmax ymin ymax])
title: sine wave
1
0.8
0.6
0.4
0.2
垂直軸

0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
水平軸
5
6
7
繪圖指令整理
plot
一般二維繪圖
title
標題
loglog
x-y對數圖
xlabel
X軸標題
semilogx
半對數圖(x軸為對數)
ylabel
Y軸標題
semilogy
半對數圖(y軸為對數)
hold
維持圖形
stem
Discrete sequence
axis
設定座標軸範圍
pie
二維圓餅圖
text
在圖上座標填入文字
mesh
三維網狀圖
surf
三維表面圖
Outline






Introduction
Environment
Basic operations
Graphics
Filter design
On-line resources
Filter Representation in Matlab

Digital filter representation




B(ejw)
b(1) + b(2)e-jw + .... + b(m+1)e-jmw
H(ejw) = --------- = -----------------------------------------A(ejw)
a(1) + a(2)e-jw + .... + a(n+1)e-jnw
A filter is specified by the two vector a and b
Filter Response Analysis

[H, W] = freqz(b, a, N)


returns the N-point complex frequency response vector H and the
N-point frequency vector W in radians/sample of the filter
Use plot command to plot the frequency response


Plot( w/pi, db(abs(H)) )
Axis([0 1 -150 10])
0
-50
-100
-150
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Filter Response Analysis (cont’d)
freqz(B,A,...) with no output arguments plots the response
Magnitude (dB) and Phase Responses
0.8436
4.6194
-16.171
-1.6577
-4.1589
-57.7518
-78.5423
-6.6602
-99.3327
-9.1615
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Normalized Frequency ( rad/sample)
0.8
0.9
-11.6628
1
Phase (radians)
-36.9614
Magnitude (dB)

FDATool

Type fdatool in the command window




Choose filter type
Set constraints
Design filter
File > export
Example 2.1













A=1;
n_max = 11;
n = -n_max:1:n_max;
X = zeros(size(n));
I = find(n==1);
II = find (n==-1);
III = find(mod(n,2)==0);
X(I) = -j*A/4;
X(II) = j*A/4;
X(III) = A./(pi*(1.-n(III).^2));
[arg_X, mag_X] = cart2pol(real(X), imag(X));
stem(n, mag_X);
stem(n, arg_X);
On-line Resources

MATLAB 程式設計與應用(網路版), 張智星


MATLAB程式設計入門篇, 張智星


http://mirlab.org/jang/books/matlabProgramming4beginner/slide/
Matlab線上教材


http://www.cs.nthu.edu.tw/~jang/mlbook/
http://libai.math.ncu.edu.tw/bcc16/B/matlab/
Matlab 簡介, 馮丁樹

http://ecaaser5.ecaa.ntu.edu.tw/weifang/matlab/index-matlab.htm