Upload
nguyen-duc
View
62
Download
10
Embed Size (px)
Citation preview
TS. Nguyên Đưc Nhân
Aug 2012
1 23/08/2012
23/08/2012 Nguyên Đưc Nhân
2
• Thời lượng môn học:
– 3 ĐVHT (20LT + 4BT + 6TH + 15 Tự Học)
• Mục tiêu:
– Kiến thưc: Cung cấp cho người học những khái niệm và kiến thưc cơ bản về mô hình hóa và mô phỏng. Nội dung của môn học sẽ tập trung vào phương pháp luận cũng như công cụ mô phỏng hệ thống truyền thông làm cơ sở cho các môn học chuyên sâu khác và hỗ trợ cho làm đồ án tốt nghiệp.
– Kỹ năng: Rèn cho sinh viên có kỹ năng sử dụng bộ công cụ chương trình MATLAB và Simulink, và các phương pháp cơ bản áp dụng cho việc mô phỏng các hệ thống truyền thông.
• Đánh giá:
− Tham gia học tập trên lớp: 10%
− Thực hành-Thí nghiệm 10%
− Bài tập/Thảo luận: 20 %
− Kiểm tra giữa kỳ: 10%
− Kiểm tra cuối kỳ: 50%
23/08/2012 Nguyên Đưc Nhân
3
• Nội dung:
– Chương 1: Tổng quan về kỹ thuật mô phỏng
– Chương 2: Giới thiệu về MATLAB
– Chương 3: Giới thiệu về Simulink
– Chương 4: Mô phỏng tín hiệu và quá trình thu phát
– Chương 5: Mô phỏng kênh thông tin
– Chương 6: Ước tính tham số và đánh giá hiệu năng
23/08/2012 Nguyên Đưc Nhân
4
• Tài liệu tham khảo:
[1] Michel C. Jeruchim, Philip Balaban, Simulation of Communication Systems: Modeling,
Methodology and Techniques, 2nd ed., Kluwer Academic/Plenum Publishers, 2000.
[2] Nguyên Viết Đảm, Mô phỏng hệ thống viễn thông và ứng dụng MATLAB, NXB Bưu Điện,
2007.
[3] J. G. Proakis, M. Salehi, G. Bauch, Contemporary Communication Systems Using MATLAB
and Simulink, 3rd ed., Cengage Learning, 2012.
[4] O. Beucher, M. Weeks, Introduction to MATLAB and Simulink: A Project Approach, 3rd ed.,
Infinity Science Press, 2008.
[5] Mathworks Inc., MATLAB and Simulink Student Version: Getting Started With MATLAB, 2007.
[6] Steven C. Chapra, R. P. Canale, Numerical Methods for Engineers, 6th ed., Mcgraw-Hill, 2010.
[7] Dennis Silages, Digital Communication Systems using MATLAB and Simulink, Bookstand
Publishing, 2009.
[8] K. C. Raveendranathan, Communication Systems Modeling and Simulation using MATLAB
and Simulink, Universities Press, 2011.
[9] Mohsen Guizani, Ammar Rayes, Bilal Khan, Ala Al-Fuqaha, Network Modeling and Simulation:
A Practical Perspective, Wiley, 2010.
5 23/08/2012 Nguyên Đưc Nhân
• Độ phưc tạp của hệ thống truyền thông hiện đại: – Ngày càng tăng lên
– Tính phưc tạp do:
• Cấu trúc phưc tạp của hệ thống
• Môi trường được triển khai
• Yêu cầu về đồng bộ do hoạt động tại tốc độ cao
động lực thúc đẩy sử dụng mô phỏng (simulation)
• Sự phát triển của máy tính số – Khả năng xử lý, giá thành, độ thân thiện, ...
• Ứng dụng mô phỏng – Giúp hiểu biết sâu cư xử của hệ thống
– Cho phép triển khai thí nghiệm tương tự như hệ thống thực giảm thiểu chi phí và thời gian cho việc thiết kế hệ thống
6 23/08/2012 Nguyên Đưc Nhân
23/08/2012 Nguyên Đưc Nhân
7
• Bài toán mô phỏng: gồm 4 bước cơ bản
– Ánh xạ bài toán đã cho thành mô hình mô phỏng
– Phân giải bài toán tổng thể thành một tập các bài
toán nhỏ hơn
– Lựa chọn các kỹ thuật mô hình hóa, mô phỏng, ước
tính phù hợp và áp dụng chúng để giải quyết các bài
toán nhỏ của chúng
– Kết hợp các kết quả của các bài toán con xử lý tạo
ra nghiệm cho bài toán tổng thể.
• Gần đúng bài toán dê dàng cho phân tích: – Phân tích
– Mô phỏng
• Phân tích – Tính toán một số đặc trưng cho một đại lượng quan tâm
• Mô phỏng – Sao chép hệ thống quan tâm: xử lý một đại lượng động giám
sát hệ thống tại các điểm khác nhau
– Sử dụng mô hình thực
– Có thể thay đổi mô tả của bất kỳ một phần tử trong hệ thống (tính module)
• Hệ thống thông tin thực: – Quá phưc tạp để đặc trưng và mô phỏng Đơn giản hóa một
số mặt của bài toán (Giảm độ phưc tạp) dê dàng hơn cho việc tính toán
8 23/08/2012 Nguyên Đưc Nhân
23/08/2012 Nguyên Đưc Nhân
9
• Ví dụ: – Dạng sóng đầu ra Vt của hệ thống: Vt = g()
• g – đặc tính truyền đạt hệ thống; = (z1, z2,..., zK) – tập các quá trình đầu vào (rời rạc thời gian)
– Chưc năng mô phỏng: • Tạo ra chuỗi giá trị {Vt} tại t = kTs, k = 1, 2,...; Ts – chu kỳ lấy
mẫu
• Chuỗi được xử lý thu được đại lượng hiệu năng hoặc thông tin phù hợp
– Thí nghiệm điều kiện: • Tạo ra Vt = g(’) với = (z1,..., zk,... , zk+1=k+1,.., zK=K)
• k quá trình đầu tiên được mô phỏng, còn lại được giữ tại giá trị cố định
• Thí nghiệm lặp lại cho một tập các điều kiện
– Thí nghiệm mô phỏng: • Tạo ra Vt = g’(’), g’ - đặc tính truyền đạt hệ thống được đơn
giản hóa
23/08/2012 Nguyên Đưc Nhân
10
Xử lý tín hiệu số Lý thuyết
xác suất
Lý thuyết
truyền thông
Phân tích số Khoa học
máy tính
Mô phỏng các
hệ thống
truyền thông
Lý thuyết hệ
thống tuyến tính
Lý thuyết
ước tính
Lý thuyết số
Lý thuyết quá
trình ngẫu nhiên
Các lĩnh vực ảnh hưởng lên nghiên cưu mô phỏng các hệ thống truyền thông
23/08/2012 Nguyên Đưc Nhân
11
• Các mặt ảnh hưởng:
– Lý thuyết truyền thông:
• Cấu trúc hệ thống, hoạt động của các phân hệ (bộ điều chế,
bộ cân bằng, ...)
– Xử lý tín hiệu số:
• Lấy mẫu, kỹ thuật khai triển tín hiệu, lọc ...
– Phương pháp số:
• Kỹ thuật tích phân, nội suy, tính gần đúng ...
– Lý thuyết xác suất:
• Biến ngẫu nhiên, hàm mật độ xác suất, ...
– Lý thuyết số:
• Chuỗi số, chuỗi ngẫu nhiên, ...
23/08/2012 Nguyên Đưc Nhân
12
• Các mặt ảnh hưởng:
– Khoa học máy tính:
• Kỹ thuật lập trình, đồ họa, ...
– Lý thuyết ước tính:
• Ước tính các tham số kết hợp thống kê và xử lý tín hiệu
– Lý thuyết quá trình ngẫu nhiên:
• Hàm phân bố, hàm tương quan, ...
– Lý thuyết hệ thống:
• Quan hệ vào/ra, đáp ưng xung, hàm truyền đạt ...
13 23/08/2012 Nguyên Đưc Nhân
Mã máy tính
Thiết bị
vật lý
Mô hình
giải tích
Mô hình
mô phỏng
Phần cưng
Các phương
trình
Thấp
Thấp Cao Độ phưc tạp mô hình
Cao
Lỗ
i mô
hìn
h h
óa
Th
ời g
ian
ch
ạy m
ô p
hỏ
ng
Dài
Ngắn
Vùng hoạt
động thực tế
Lỗi theo độ
phưc tạp
Thời gian chạy
chương trình
theo độ phưc tạp
Ảnh hưởng của độ phưc tạp mô hình Thiết bị và các mô hình
23/08/2012 Nguyên Đưc Nhân
14
Networks
Links
Signal
processing
Circuit
analysis
RF
Simulate the flow of
packets, messages, etc.
Event driven
simulations
Interface Specifications
Interface Performance Data
RF simulations Circuit
simulations
Circuit
implementation
details
Algorithm
implementation
details
Time driven
finite-precision
simulations
Simulate waveform
distortion effects; noise
and interference
Time driven,
waveform level
simulations
Tính phân cấp trong các hệ thống truyền thông
23/08/2012 Nguyên Đưc Nhân
15
Level 0
Level 1 Level 1 Level 1
Level 2 Level 2 Level 2
Level 3 Level 3 Level 3
To level 2 To level 2
To level 3 To level 3
Cấu trúc phân cấp trong mô hình hóa
23/08/2012 Nguyên Đưc Nhân
16
Information
source
Channel
encoder
Source
encoder
Baseband
modulator
Transmit
filter
RF
modulator
Comm.
channel
RF
demodulator
Loop
filter
Baseband
demodulator Equalizer
Channel
decoder
Source
decoder
Info.
sink
Timing
recovery
Noise
Interference
Partitioning
Higher
abstraction
More details
Carrier
recovery
Bandpass
filter (.)4 Bandpass
filter @ 4fc PLL @ fc
Phase
detector
VCO (c) Component Model
(b) Subsystem Model
(a) System Level Model
Receive
filter
23/08/2012 Nguyên Đưc Nhân
17
• Mô hình hóa hệ thống: – Hệ thống: mưc cao nhất của mô tả, đặc trưng bởi sơ đồ
khối các phân hệ
– Vấn đề mô hình hóa hệ thống: vấn đề cấu hình • Sơ đồ khối mô phỏng càng sát với hệ thống thực Mô hình hệ
thống càng chính xác
– Giảm mưc độ phưc tạp mô hình hóa sử dụng tập con các khối ở cùng mưc phân cấp
• Mô hình hóa thành phần linh kiện – Linh kiện: một khối tại mưc phân hệ chưa những đặc điểm
mà nhà thiết kế hệ thống mong muốn
– Kiểu mô tả: một phương trình, một tập phương trình, một thuật toán, hoặc một lookup table
– Mô hình phân hệ tốt: có các tham số đầu vào có thể biến đổi phản ánh cư xử thực của linh kiện
23/08/2012 Nguyên Đưc Nhân
18
• Mô hình hóa quá trình ngẫu nhiên: – Đầu vào và đầu ra của hệ thống và các phân hệ: các quá
trình ngẫu nhiên mong muốn (thông tin) và không mong muốn (nhiêu và giao thoa)
– Các quá trình được mô phỏng: sao chép các tính chất của các quá trình thực
• Nhiệm vụ mô hình hóa: Sao chép quá trình ngẫu nhiên tạo ra đặc tính đầu ra chính xác
– Mô hình quá trình ngẫu nhiên tương đương: tiết kiệm thời gian tính toán
• Mô hình hóa hệ thống giả định – Trong thiết kế hệ thống: Đặc tính kỹ thuật của hệ thống
chưa được biết hệ thống giả định
– Giả sử một số lượng nhỏ nhất các thành phần mà vẫn thu được một hệ thống hợp lý
• Kỹ thuật đánh giá hiệu năng: – Tập hợp các công cụ giải tích và các giả định ước
tính hiệu quả đại lượng hiệu năng
• Mô phỏng Monte Carlo – Tỉ số lỗi bit BER được ước tính: cho N bit qua hệ
thống và đếm lỗi
– Đảm bảo độ tin cậy: Số bit cần để quan sát trong phạm vi 10/p đến 100/p, p = BER thực.
• Một số kỹ thuật PET thay thế – Kỹ thuật bán giải tích (quasianalytical estimation)
– Kỹ thuật lấy mẫu quan trọng (Importance sampling)
– Kỹ thuật ngoại suy (Extrapolation)
19 23/08/2012 Nguyên Đưc Nhân
23/08/2012 Nguyên Đưc Nhân
20
System Properties
Fast Slow Fast Slow
Linear Non-linear
Channel
Characteristics Signal Design Synchronization
Errors
Non-fading Fading
Coded Uncoded Bandwidth
wrt Data Rate Magnitude
wrt Memory wrt Data Rate
23/08/2012 Nguyên Đưc Nhân
21
• Độ chính xác của mô phỏng bị giới hạn bởi:
– Ba kiểu sai số mô hình hóa:
• Mô hình hóa hệ thống
• Mô hình hóa thành phần linh kiện
• Mô hình hóa quá trình ngẫu nhiên
– Sai số xử lý
23/08/2012 Nguyên Đưc Nhân
22
Error
Sources
Device
Modeling
Random Process
Modeling
System
Modeling
Approximation
Finite Storage;
Truncation
Finite Sampling
Rate; Aliasing
Finite Run Time;
Statistical
Variability
Modeling Processing
23/08/2012 Nguyên Đưc Nhân
23
Device
Models Simulation
Environment Random
Process
Models
Performance
Evaluation
Techniques
Performance
Evaluation
System
Model
Validation
Quá trình kiểm chưng
23/08/2012 Nguyên Đưc Nhân
24
Concept Definition
. Information Rate
. Fidelity
.
. System Issues
.
Initial Link
Budget
Performance
Demonstration
(Engineering
Development
Models)
Synthesize
Pedigreed
“Spec” Model
Initial
Communication
Parameter
Specifications
Life
Environment
Tolerance
System
Validation
Link Closure
Final Link
Budget
Final
Communication
Parameter
Specifications
Link Closure
Hardware
Development
Communication
System
Simulation
Mo
dify S
pe
cs
Validate Simulation
Spec Performance
Estimate
Historical
Data Base
Measurements
Changes No
Yes
No Yes
25 23/08/2012 Nguyên Đưc Nhân
23/08/2012 Nguyên Đưc Nhân
26
• MATLAB: MATrix LABoratory – Là một công cụ mô phỏng và tính tóan số
– Các hoạt động tính toán dựa trên cấu trúc dữ liệu đơn hay matrix cú pháp trong MATLAB đơn giản, chương trình dê viết hơn các ngôn ngữ lập trình bậc cao hoặc các chương trình đại số máy tính khác.
– MATLAB là một ngôn ngữ dịch, tất cả các lệnh có thể được thực hiện trực tiếp
– Được bổ sung thêm “symbolics” toolbox cho phép thực hiện tính toán dạng “symbolic” như các chương trình MAPLE hoặc MATHEMATICA.
– Khả năng tương tác với Simulink, một toolbox đặc biệt – công cụ để xây dựng chương trình mô phỏng dựa trên giao diện đồ họa.
23/08/2012 Nguyên Đưc Nhân
27
Cửa sổ lệnh
Cửa sổ lịch sử lệnh
Cửa sổ thư mục hiện tại
Workspace (Cửa
sổ biến làm việc)
Thanh công cụ
23/08/2012 Nguyên Đưc Nhân
28
• Các biến MATLAB – Kiểu dữ liệu cơ bản: matrix
– Định nghĩa các biến MATLAB:
>> x = 2.4
x =
2.4000
>> vector = [1 5 -3]
vector =
1 5 -3
>> thematrix = [3 1+2*i 2;4 0 -5]
thematrix =
3.0000 1.0000 + 2.0000i 2.0000
4.0000 0 -5.0000
23/08/2012 Nguyên Đưc Nhân
29
• Các biến MATLAB – Workspace: Sử dụng lệnh who hoặc whos để kiểm tra biến
Để xóa biến sử dụng lệnh clear
23/08/2012 Nguyên Đưc Nhân
30
• Các biến MATLAB – Xử lý các biến:
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> A(:,1)=[]
A =
2 3
5 6
8 9
>> A(2,:)=[]
A =
1 2 3
7 8 9
>> B = A(2,:)
B =
4 5 6
• Các biến MATLAB: – Bài tập: 1. Tạo các vectơ và ma trận trong MATLAB với các biến:
2. Khai triển ma trận M thành ma trận V 6x6:
Xóa hàng 2 và cột 3 từ ma trận V
Tạo vectơ z từ hàng 4 của ma trận V
Biến đổi giá trị tại V(4,2) thành j+5 23/08/2012 Nguyên Đưc Nhân
31
23/08/2012 Nguyên Đưc Nhân
32
• Các hoạt động số học – Các phép tính ma trận:
23/08/2012 Nguyên Đưc Nhân
33
• Các hoạt động số học – Các phép tính theo phần tử: sử dụng . (dot) để phân biệt
23/08/2012 Nguyên Đưc Nhân
34
• Các hoạt động số học – Các phép tính chia: phân biệt chia trái (\) và chia phải (/)
23/08/2012 Nguyên Đưc Nhân
35
• Các hoạt động số học – Các phép tính chia: phân biệt chia trái (\) và chia phải (/)
23/08/2012 Nguyên Đưc Nhân
36
• Các hoạt động số học – Bài tập:
3. Tính tích 2 ma trận: và
4. Dùng hoạt động ma trận để biến đổi từ
thành
5. Tính ma trận đảo của M bằng phép chia
23/08/2012 Nguyên Đưc Nhân
37
• Các hoạt động logic – Các hoạt động logic cho ra kết quả true (1) hoặc false (0)
23/08/2012 Nguyên Đưc Nhân
38
• Các hoạt động logic – Các hoạt động logic cho ra kết quả true (1) hoặc false (0)
23/08/2012 Nguyên Đưc Nhân
39
• Các hoạt động logic – Các hoạt động logic cho ra kết quả true (1) hoặc false (0)
23/08/2012 Nguyên Đưc Nhân
40
• Các hoạt động logic – Bài tập:
6. Kiểm tra và giải thích kết quả hoạt động logic AND và OR giữa 2 ma trận trong bài tập 3.
7. Kiểm tra và giải thích kết quả hoạt động quan hệ giữa 2 vectơ: và
8. Cho ma trận:
Sử dụng các toán tử quan hệ để đặt các số hạng trong ma trận có giá trị > 10 và < -10 bằng 0.
23/08/2012 Nguyên Đưc Nhân
41
• Các hàm toán học – Các hoạt động được thực hiện theo từng phần tử
23/08/2012 Nguyên Đưc Nhân
42
• Các hàm toán học – Các hoạt động được thực hiện theo từng phần tử
23/08/2012 Nguyên Đưc Nhân
43
• Các hàm toán học – Bài tập:
9. Tính giá trị của tín hiệu: với
vectơ thời gian từ 0 đến 10 có cỡ bước 0,1.
10. Tính giá trị của tín hiệu: theo
vectơ thời gian của bài 9.
11. Làm tròn giá trị của vectơ: về giá trị nguyên
gần nhất theo vectơ thời gian của bài 9.
12. Tính logarith cơ số 2 và 10 của vectơ:
23/08/2012 Nguyên Đưc Nhân
44
• Các hàm đồ họa – Sử dụng:
– Vẽ đồ thị 2 D:
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
23/08/2012 Nguyên Đưc Nhân
45
• Các hàm đồ họa – Vẽ đồ thị 2D:
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
23/08/2012 Nguyên Đưc Nhân
46
• Các hàm đồ họa – Vẽ đồ thị 2D:
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
23/08/2012 Nguyên Đưc Nhân
47
• Các hàm đồ họa – Các hàm
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
time / s
Am
plit
ude /
V
zero crossing
A cosine voltage with frequency 1 Hz
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
time / s
Am
plit
ude /
V
Detail of the cosine voltage with frequency 1 Hz
23/08/2012 Nguyên Đưc Nhân
48
• Các hàm đồ họa – Vẽ đồ thị 3 D: sử dụng mesh hoặc surf
-3-2
-10
12
3
-2
0
2
-0.2
0
0.2
0.4
0.6
x-axisy-axis
23/08/2012 Nguyên Đưc Nhân
49
• Các hàm đồ họa – Vẽ đồ thị 3 D:
-3-2
-10
12
3
-2
0
2
-0.2
0
0.2
0.4
0.6
x-axisy-axis
-3-2
-10
12
3
-2
0
2
-0.2
0
0.2
0.4
0.6
x-axisy-axis
23/08/2012 Nguyên Đưc Nhân
50
• Các hàm đồ họa – Vẽ nhiều đồ thị:
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50
5
10
15
20
25
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-4
-2
0
2
4
23/08/2012 Nguyên Đưc Nhân
51
• Các hàm đồ họa – Bài tập:
13. Cho vectơ tần số: và các hàm truyền của
một bộ tích phân và của một phần tử trê thời gian bậc 1 tương ưng:
thường gặp trong xử lý tín hiệu và kỹ thuật điều khiển. Hãy vẽ đồ thị biên độ của các hàm truyền này trên 2 hình riêng biệt.
Sử dụng các hàm semilogx, semilogy và loglog để thay đổi kết quả biểu diên đồ thị theo các kiểu trục khác nhau. Xác định kiểu biểu diên nào là tốt nhất.
14. Vẽ biên độ và pha của các hàm truyền cho ở bài 13 trên cùng một hình.
15. Tính và vẽ hàm x2 + y2 trong dải [-2,2]x[-1,1] sử dụng lưới có cỡ bước 0.2 theo chiều x và 0.1 theo chiều y.
16. Vẽ hình cầu có bán kính R = 3.
23/08/2012 Nguyên Đưc Nhân
52
• Các hoạt động I/O – Sử dụng các lệnh save và load: để lưu hoặc nạp các dữ liệu từ
file trong MATLAB.
>> save 'C:\ndnhan\matlab7\thevars' var1 var2 -V6
23/08/2012 Nguyên Đưc Nhân
53
• Điều khiển ma trận – Xem:
>> E5 = eye(5)
E5 =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
% Xác định độ dài vector
% Tạo ma trận đơn vị
23/08/2012 Nguyên Đưc Nhân
54
• Điều khiển ma trận
% Xác định kích thước ma trận
% Chuyển vị ma trận
23/08/2012 Nguyên Đưc Nhân
55
• Điều khiển ma trận
23/08/2012 Nguyên Đưc Nhân
56
• Các cấu trúc – structures – Ví dụ: Định nghĩa structure Graphic
23/08/2012 Nguyên Đưc Nhân
57
• Điều khiển ma trận và cấu trúc – Bài tập:
17. Tạo vectơ y = (1, 1.5, 2, ..., 4.5, 5). Sử dụng hoạt động điều khiển
ma trận phù hợp để đảo trật tự các số hạng của vectơ y để tạo ra
vectơ yr = (5, 4.5, ..., 1.5, 1).
Tạo vectơ z chỉ chưa các số nguyên từ vectơ y.
18. Định nghĩa cấu trúc color với các trường dữ liệu red, blue và
green. Sau đó định nghĩa một trường 1x20 của các cấu trúc kiểu
này và khởi tạo thành phần red bằng giá trị ‘yes’, thành phần blue
bằng giá trị ‘no’ và thành phần green với giá trị [0,256,0]
23/08/2012 Nguyên Đưc Nhân
58
• MATLAB Editor
Thanh công cụ cell
Cửa sổ Editor
Danh sách menu
Các icon cho cấu
hình cửa sổ Các icon cho debug và
ngăn xếp chưc năng
23/08/2012 Nguyên Đưc Nhân
59
• Các thủ tục – Cung cấp các tập lệnh được thực hiện trong cửa sổ lệnh bằng
một lệnh đơn giản.
– Các chuỗi lệnh được viết bằng Editor và được lưu trong một m-
file với tên sẽ được sử dụng để chạy trong cửa sổ lệnh.
– Sử dụng lệnh help để kiểm tra sự tồn tại của hàm.
• Các thủ tục
>> vidu1
23/08/2012 Nguyên Đưc Nhân
60
23/08/2012 Nguyên Đưc Nhân
61
• Các function – Cấu trúc:
function [out1, out2, ...] = funname(in1,in2, ...)
Lưu ý: Tên hàm phải trùng tên của m-file chưa hàm
Các biến trong function là các biến cục bộ
Gọi hàm ở cửa sổ lệnh:
>> [y1,y2,...] = funname(x1,x2,...) hoặc
>> funname(x1,x2,...)
Các tham số đầu vào Các tham số đầu ra
Tên hàm
23/08/2012 Nguyên Đưc Nhân
62
• Các function
>> [t,s1,c1,e1] = vidu1(3,5,4);
23/08/2012 Nguyên Đưc Nhân
63
• Các thủ tục – Bài tập:
19. Viết một chương trình MATLAB có tên circle_prog.m để thực
hiện các hoạt động sau: vẽ đường tròn có bán kính r = 3, trả về
các kết quả tính chu vi và diện tích hình tròn.(Hint: sử dụng
lệnh axis equal để hiển thị đồ thị tốt hơn)
20. Thay đổi chương trình trên để hiển thị kết quả với 5 số sau dấu
phẩy. (Hint: có thể dùng lệnh sprintf)
23/08/2012 Nguyên Đưc Nhân
64
• Các cấu trúc ngôn ngữ MATLAB
23/08/2012 Nguyên Đưc Nhân
65
• Các cấu trúc ngôn ngữ MATLAB – Câu lệnh if:
if expression1
statements1
elseif expression2
statements2
else
statements3
end
if A > B
disp('A lon hon B');
elseif A == B
disp('A bang B');
else
disp('A nho hon B');
end
23/08/2012 Nguyên Đưc Nhân
66
• Các cấu trúc ngôn ngữ MATLAB – Câu lệnh for:
for variable = expression
statement
...
statement
end
k = 10;
a = zeros(k,k) % Preallocate matrix
for m = 1:k
for n = 1:k
a(m,n) = 1/(m+n -1);
end
end Ví dụ tính giá trị phần tử trong ma trận
23/08/2012 Nguyên Đưc Nhân
67
• Các cấu trúc ngôn ngữ MATLAB – Câu lệnh while:
while expression
statements
end
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
Ví dụ tìm nghiệm của một đa thưc
bằng phương pháp bisection
Đa thưc
23/08/2012 Nguyên Đưc Nhân
68
• Các cấu trúc ngôn ngữ MATLAB – Câu lệnh switch-case:
switch switch_expr
case case_expr
statement, ..., statement
case {case_expr1, case_expr2, case_expr3, ...}
statement, ..., statement
otherwise
statement, ..., statement
end
method = 'Bilinear';
switch lower(method)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end
23/08/2012 Nguyên Đưc Nhân
69
• Các cấu trúc ngôn ngữ MATLAB – Câu lệnh switch-case:
function [t, sinfct, cosfct] = FSwitchIn(f1, f2, damp)
% function FSwitchIn
%
% call: [t, sinfct, cosfct] = FSwitchIn(f1, f2)
% or [t, sinfct, cosfct] = FSwitchIn(f1, f2, damp)
%
% An example of an MATLAB function with a variable
% number of input parameters
t=(0:0.01:2);
switch nargin
case 2
sinfct = sin(2*pi*f1*t);
cosfct = 2*cos(2*pi*f2*t);
plot(t,[sinfct; cosfct])
xlabel('time / s')
ylabel('Amplitude')
title('sine and cosine oscillations‘)
case 3
sinfct = sin(2*pi*f1*t);
cosfct = 2*cos(2*pi*f2*t);
expfct = exp(-damp*t);
plot(t,[sinfct; cosfct; expfct])
xlabel('time / s')
ylabel('Amplitude')
title('three gorgeous signals')
otherwise
msg = 'The function FSwitchIn must have 2';
msg = strcat(msg, ' or 3 input parameters!');
error(msg);
end
if nargout < 3
msg = 'The function FSwitchIn should return a time';
msg = strcat(msg, 'vector and two sine signals!');
error(msg);
end
Ví dụ sử dụng nargin và nargout
23/08/2012 Nguyên Đưc Nhân
70
• Bài tập 21. Cho một hàm f(x) = x3/3+4x2+x-6 trong dải -1<x<3. Viết chương
trình tìm nghiệm phương trình trên bằng phương pháp bisection với sử dụng 2 dự đoán ban đầu tại x = 0 và x = 3.
(Sử dụng lệnh input để cho phép nhập giá trị các tham số đầu vào từ bàn phím khi chạy chương trình)
22. Viết mã chương trình sử dụng vòng lặp để tính tích phân:
bằng phương pháp midpoint với số lượng điểm N = 100.
23. Viết mã chương trình sử dụng vòng lặp while để tính gần đúng dựa trên phương pháp Newton dùng hệ thưc đệ quy:
Quá trình lặp thực hiện cho đến khi xn thay đổi chỉ 0.0001.
23/08/2012 Nguyên Đưc Nhân
71
• Hàm eval – Sử dụng để đánh giá các xâu ký tự (string):
23/08/2012 Nguyên Đưc Nhân
72
• Function handles – Một handle function hoạt động như con trỏ đến hàm bằng việc
sử dụng @ trước hàm đó
23/08/2012 Nguyên Đưc Nhân
73
• Function handles – Ví dụ: Tính tích phân số bằng phương pháp điểm giữa
function [integral] = midpoint(a, b, F, N)
% Function midpoint
%
% sample call: integ = midpoint(0, 2, @myfun, 10)
%
% The present example calculates the integral of the function F,
% whose name is passed on as a function handle to midpoint, over
% the limits [a,b]. Midpoint rule is used to calculate the integral;
h=(b-a)/N; % subinterval length
% intval=(a+h/2:h:a+(N-1/2)*h); % points marking subintervals
integral = F(a+h/2); % F at the lower limit of the interval
%
For k=2:N
xi = a + (k-1/2)*h;
integral = integral+F(xi);
% integral = integral+F(intval(i));
end;
integral = integral*h; % normalizing with h
23/08/2012 Nguyên Đưc Nhân
74
• Phương trình vi phân thường (ODE) – Trong mô hình của các hệ thống động: các tham số là hàm của
thời gian , vận tốc và gia tốc
– Thường hầu hết mô hình các hệ thống động, ta có thể rút gọn từ các phương trình vi phân bậc 2 về các phương trình vi phân bậc 1 có dạng:
– Hệ thống được mô tả đầy đủ:
Hàm f có thể là hàm tuyến tính hoặc phi tuyến của biến độc lập x và tham số phụ thuộc y.
23/08/2012 Nguyên Đưc Nhân
75
• Phương pháp Euler – Dựa trên gần đúng sai phân hữu hạn đối với đạo hàm
– Tổng quát:
1 0 ( 1)n nx x n h x h
x(1) = x0;
y(1) = y0;
for k = 2:N % N – Number of steps
x(k) = x(k-1) + h;
y(k) = y(k-1)+Fdot(x(k-1),y(k-1))*h;
end;
• Phương pháp Euler biến đổi – Sử dụng chuỗi Taylor cho việc phân tích ODE xác định được:
23/08/2012 Nguyên Đưc Nhân
76
t(1) = t0;
y(1) = y0;
for k=2:N
y1=y(k-1)+h*fdot(t(k-1),y(k-1));
t1=t(k-1)+h;
loopcount=0; diff=1;
while abs(diff) >.05
loopcount=loopcount+1;
y2=y(k-1)+h*(fdot(t(k-1),y(k-1))+fdot(t1,y1))/2;
diff=y1-y2; y1=y2;
end;
%collect values together for output
t(k) = t1; y(k) = y1;
end;
23/08/2012 Nguyên Đưc Nhân
77
• Phương pháp Runge-Kutta – Phương pháp RK bậc 2:
Lựa chọn c1, c2, a2 các pp RK khác nhau:
Khi c1 = 1/2, c2 = 1/2, a2 = 0 PP Euler biến đổi
Khi c1 = 0, c2 = 1, a2 = ½: PP Midpoint
Khi c1 = 1/4, c2 = 3/4, a2 = 2/3:
23/08/2012 Nguyên Đưc Nhân
78
• Phương pháp Runge-Kutta – Phương pháp RK bậc 3:
23/08/2012 Nguyên Đưc Nhân
79
• Phương pháp Runge-Kutta – Phương pháp RK bậc 4:
xSol(1) = x; ySol(1,:) = y;
k = 1;
while x < xStop
k = k+1;
K1 = h*feval(Fdot,x,y);
K2 = h*feval(Fdot,x + h/2,y + K1/2);
K3 = h*feval(Fdot,x + h/2,y + K2/2);
K4 = h*feval(Fdot,x+h,y + K3);
y = y + (K1+2*K2+2*K3+K4)/6;
x = x+h;
xSol(k) = x; ySol(k,:) = y; % Store current soln.
end
23/08/2012 Nguyên Đưc Nhân
80
• Phương pháp Runge-Kutta – Tập các hàm giải phương trình vi phân trong MATLAB:
[T,Y] = solver(odefun,tspan,y0)
[T,Y] = solver(odefun,tspan,y0,options)
Ví dụ: [t,y] = ode45(myfun,[t0 tf],y0);
23/08/2012 Nguyên Đưc Nhân
81
• Ví dụ: – Cho ODE bậc 1:
% Euler method to solve a 1st-order differential equation
clear, clf
a=1;r=1;y0=0; tf=2;
t = [0:0.01:tf]; yt=1-exp(-a*t); % true analytical solution
plot(t,yt,'k'), hold on
klasts = [8 4 2]; hs = tf./klasts;
y(1) = y0;
for itr = 1:3 %with various step size h = 1/8,1/4,1/2
klast = klasts(itr); h = hs(itr); y(1)=y0;
for k = 1:klast
y(k + 1) = (1 - a*h)*y(k) +h*r; % Euler's formula
plot([k - 1 k]*h,[y(k) y(k+1)],'b', k*h,y(k+1),'ro')
if k<4,pause;end
end
end
Nghiệm giải tích:
Nghiệm thu được tại các cỡ bước khác nhau
23/08/2012 Nguyên Đưc Nhân
82
• Ví dụ: – Dao động con lắc:
Điều kiện ban đầu:
Hàm pendde.m
23/08/2012 Nguyên Đưc Nhân
83
• Bài tập: 24. Viết chương trình tìm nghiệm ptr vi phân: với a = 1, r = 1
và y(0) = 0 bằng phương pháp Euler biến đổi với cỡ bước h = 0.25. Xác định sai số so với nghiệm giải tích tại 2 thời điểm t = 1 và t = 2.
25. Tương tự bài tập 24 nhưng sử dụng phương pháp RK bậc 3.
26. Tương tự bài tập 24 nhưng sử dụng phương pháp RK bậc 4.
27. Cho sơ đồ mạch RC hình bên:
Điện áp đầu ra của hệ thống tuân theo ptr vi phân tuyến tính:
Hãy viết chương trình tìm nghiệm của ptr này trong khoảng [0, 3] s bằng phương pháp RK bậc 4, biết C = 4.7F và R = 10 k. Hàm u1(t) là hàm bậc đơn vị. Sau đó so sánh kết quả với nghiệm thu được bằng việc sử dụng lệnh ode45.