Workspace : Thể hiện tên biến với giá trị, kích thước vùng nhớ, kiểu dữ liệu… Comand History : Lưu các dòng lệnh nhập vào trong cửa sổ Command window.. Các biến trong MATLAB Không c
Trang 1Bài giảng PHÂN TÍCH HỆ THỐNG
Chương IV Phân tích hệ bằng máy tính số và máy tính
tương tự 4.1 Giới thiệu về MATLAB
1 Giới thiệu chung về MATLAB
2 Symbolic Math Toolbox
3 Simulink
Trang 2 Matlab (Matrix Laboratory) - thư viện về ma trận: là một ngôn ngữ hiệu năng cao cho tính toán kỹ thuật
Tích hợp tính toán, hiển thị và lập trình trong một môi trường dễ sử dụng.
Bắt nguồn bằng FORTRAN để cung cấp truy nhập dễ dàng tới phần mềm ma trận được phát triển bởi các dự
án LINPACK và EISPACK.
Sau được viết bằng ngôn ngữ C và phát triển thêm
nhiều lĩnh vực của tính toán khoa học, các ứng dụng kỹ thuật
1.Giới thiệu chung về Matlab
Trang 31.Giới thiệu chung về Matlab
Các ƯD tiêu biểu :
Khả năng tính toán mạnh.
Phát triển thuật toán.
Chứa Simulink là môi trường mạnh để mô phỏng các hệ thống động học tuyến tính và phi tuyến.
Đồ họa khoa học - kỹ thuật và phát triển ứng
dụng với các giao diện đồ họa
Có kiến trúc mở, cho phép phát triển,giao tiếp với một số phần mềm khác như C++, Fortran
Trang 4Matlab còn được trang bị thêm các ToolBox – các gói chương trình (thư viện) cho các lĩnh vực ứng dụng rất
đa dạng như xử lý tín hiệu, nhận dạng hệ thống, xử
lý ảnh, mạng nơ ron, logic mờ, tối ưu hóa, phương
trình đạo hàm riêng, sinh tin học,
Cài đặt Matlab :
1.Giới thiệu chung về Matlab
Trang 51.Giới thiệu chung về Matlab
Trang 61.Giới thiệu chung về Matlab
Khởi động MATLAB
Trang 7Thanh menu Thanh công cụ Thanh tiêu đề
Workspace Comand Window
Comand History
Hình 1.2: Cửa sổ Matlab1.1 Matlab
Trang 8 Thanh tiêu đề gồm:biểu tượng chương trình, tên
chương trình cùng với cửa sổ chương trình Tận cùng
là ba biểu tượng có chức năng phong to, thu nhỏ và thoát chương trình.
Thanh menu chính chứa các lệnh liên quan đến
việc tạo, xử lý, gán thuộc tính … vào đồ thị.
Thanh công cụ chứa các hộp công cụ chứa các lệnh nhanh.
1.1 Matlab
Trang 9 Workspace : Thể hiện tên biến với giá trị, kích thước vùng nhớ, kiểu dữ liệu…
Comand History : Lưu các dòng lệnh nhập vào trong cửa sổ Command window.
Comand Window : là nơi nhập và hiển thị giá trị các biến, tính toán giá trị của biểu thức, thực thi các hàm
Cuối cùng là thanh tác vụ hiện thông tin về tình
trạng đang xử lý, thực hiện đối tượng.
1.1 Matlab
Trang 101.2.1 Menu File
Hình 1.2.1 Menu File và các Menu con của New1.2.Các lệnh Menu
Trang 11 Một cửa sổ đồ hoạ (Figure)
Một mô hình mô phỏng hệ thống (Model)
Đồ hoạ GUI (Graphical User Interface).
a.New
Trang 121.2.1 Menu File
+ M-file
Hình 1.2.1a Cửa sổ Untitled
Trang 131.2.1 Menu File
+ Figure
Hình 1.2.1b Cửa sổ Figure No 1
Trang 141.2.1 Menu File
+ Model: trên cửa sổ này ta có thể gọi trình Simulink
Hình 1.2.1c: Cửa sổ untitled của Model
Trang 151.2.1 Menu File
Simulink
Hình 1.2.1c: Cửa sổ Simulink Library Browse
Trang 161.2.1 Menu File
+ GUI (Grapphical User Interface)
Hình 1.2.1d Cửa sổ GUIDE Quick Start
Trang 171.2.1 Menu File
b.Open:
Hình 1.2.1f Cửa sổ Open
Trang 181.2.1 Menu File
c Close Comand Window
d Import Data: Nhập dữ liệu vào Workspace
hình 1.2.1g Cửa sổ Import
Trang 191.2.1 Menu File
e.Save Workspace as:
Hình 1.2.1h Khung thoại Save to MAT-File
Trang 201.2.1 Menu File
f Set Path
Hình 1.2.1i Cửa sổ Set Path
Trang 211.2.1 Menu File
g.Preferences
Hình 1.2.1i Cửa sổ Preferences
Trang 221.2.1 Menu File
h Page Setup
Hình 1.2.1k Cửa sổ Page Setup
Trang 241.2.2 Menu Edit
Hình 1.2.2 Các lệnh của Menu Edit
Trang 251.2.2 Menu Edit
a Undo (Ctrl + Z): Huỷ lệnh hoặc thao tác đã thực hiện trước
b Cut (Ctrl +X) : Xoá tạm thời đối tượng trong khung cửa sổ lệnh hiện hành và đưa vào bộ nhớ đệm của chương trình, sau đó có thể dán đối tượng trở lại vào vị trí được chọn
c Copy (Ctrl + C) : Sao chép đối tượng trong khung cửa sổ
lệnh MATLAB và sau đó dán vào vị trí đã chọn
d Paste (Ctrl + V) : Dán đối tượng đã được Cut hoặc Copy
vào vị trí đã chọn
e Paste Special : Dán các nội dung trong vùng nhớ đệm vào
Works Space như một hoặc nhiều biến
f Select All: Chọn toàn bộ nội dung trong khung cửa sổ lệnh
g Delete: Xóa nội dung đoạn văn bản được chọn
Trang 261.2.2 Menu Edit
i Find
k Clear Comand Window: Xóa sạch cửa sổ lệnh.
l Clear Comand History: Xóa sạch những lệnh đã được lưu
trong cửa sổ Comand History
m Clear Workspace: Xóa nội dung Workspace
Trang 271.2.2 Menu View
Hình 1.2.3 Những lựa chọn của Menu View
Trang 281.2.4 Menu Web
Hình 1.2.4 Những lựa chọn của Menu Web
Trang 291.2.5 Menu Window: Lựa chọn đóng toàn bộ cửa sổ.
1.2.6 Menu Help: Những lựa chọn về giúp đỡ (hình 1.2.6)
Hình 1.2.6 Những lựa chọn của Menu Help
Trang 301.3 Các khái niệm cơ bản
Trang 311.3 Các khái niệm cơ bản
1.3.2 Các biến trong MATLAB
Không cần khai báo biến và kiểu của biến
Bất kỳ một phép toán nào gán một giá trị vào một biến sẽ tạo ra biến đó
Tên biến bao gồm một chữ cái sau đó là một số bất kỳ các chữ cái, chữ số và dấu gạch dưới
Tên biến trong Matlab có thể là một dãy dài ký tự
Bình thường Matlab có sự phân biệt các biến tạo bởi chữ cái thường và chữ cái hoa
a Tên biến
Trang 321.3.2 Các biến trong MATLAB
b Một số biến đã được định nghĩa trước
Ans, pi, realmax, realmin, i, j, inf, NaN
input, demo, help, clc, clfclear, clear b1,b2…
Who, whos, sizeSave, load
c Một số lệnh
Trang 331.3.2 Các biến trong MATLAB
d Biến toàn cục (global variables)
>>global b1 b2 : biến toàn cục (hàm hoặc các ct chính)
>>clear global : loại bỏ các biến toàn cục
>>isglobal (Tên biến): kiểm tra có phải biến toàn cục?
Trang 341.3.3 Các phép toán trong Matlab
Trang 351.3.3.2 Thứ tự ưu tiên trong phép toán số học:
Trang 361.3.3 Các phép toán trong Matlab
1.3.3.3 Các ví dụ:
- Giải phương trình bậc hai
- Tính giá trị của đa thức
1.3.4 Một số hàm toán học thường gặp
Sin, asin
round, rem, explog: logarit cơ số elog10: logarit cơ số 10
Trang 371.3.5 Các phép toán quan hệ và phép toán logic
Trang 381.3.5.2 Các phép toán logic
Phép và ( and): Ký hiệu là &
Phép hoặc (or) : Ký hiệulà |
Phép đảo( not): Ký hiệu là ~
1.3.5 Các phép toán quan hệ và phép toán logic
Trang 421.3.6 Số phức và các phép toán về số phức
Matlab biểu thị số phức bởi i và j 1.3.6.1.Biểu diễn số phức
Tên = Phần thực + phần ảo iTên = Phần thực + phần ảo j
1.3.6.2 Các phép toán đối với số phức
Cộng, trừ, nhân, chia số phức
c1= a1+b1i c2=a2+b2i
Trang 43Các hàm đặc biệt:
real(x) : phần thực của số phức x
imag(x): phần ảo của số phức x
conj(x): số phức liên hợp của số phức x
abs(x): modun của số phức x
angle(x): argumen của số phức x
1.3.6 Số phức và các phép toán về số phức
Ví dụ:
Trang 441.3.7 Sử dụng lệnh trực tiếp với Matlab
Sau khi xuất hiện dấu nhắc “>>” trong cửa sổ command
window điều đó đồng nghĩa cho phép nhập biến hoặc thực
hiện các câu lệnh mong muốn
Do dữ liệu của MATLAB được thể hiện dưới dạng ma trận cho nên các biến dùng trong Matlab dữ liệu của nó cũng thể hiện dưới dạng ma trận
Việc đặt tên biến không được đặt một cách tuỳ tiện mà phải đặt theo một quy định :
Trang 451.3.7 Sử dụng lệnh trực tiếp với Matlab
•Tên ma trận (biến) phải bắt đầu bằng một chữ cái, và có thể chứa ký tự là số hoặc chữ
•Bên phải dấu bằng là các giá trị của ma trận
•Dấu chấm phẩy (;) là để phân cách các hàng, còn các giá trị trong hàng được phân cách nhau bởi dấu phẩy(,) hoặc dấu
cách (phím space)
•Kết thúc nhập ma trận thường có dấu chấm phẩy hoặc không tuỳ theo muốn thể hiện kết quả của nó hay không
Trang 461.3.8 Sử dụng các lệnh từ các file lệnh
Những lệnh của Matlab có thể được đưa vào một file
Ví dụ về giải ptb2 trong file lấy tên là gptb2.m
Bước 1: File / New/ M-file
Bước 2: Trên màn hình soạn thảo, gõ các lệnh của Matlab.
Trang 471.3.8 Sử dụng các lệnh từ các file lệnh
Bước 3: Ghi lại nội dung tên gptb2.m trở về cửa sổ lệnh
(Matlab Command window)
Bước 4: Tại cửa sổ lệnh ta gõ tên tập tin gptb2.m
Kết quả sẽ được hiện ra ngay
Trang 481.3.9 Dòng nhắc gán giá trị biến
Để thay đổi các giá trị a,b,c ta phải soạn thảo lại file
vidu.m rồi chạy lại Sửa lại chương trình để có dòng nhắc nhập
a, b, c với các lần chạy chương trình khác nhau
Bước 1: File / New/ M-file
Bước 2: Soạn thảo chương trình như sau:
Trang 521.3.10 Cách tạo hàm trong Matlab
Function [ Tên kết quả] = tên hàm (danh sách các biến)
Phần thân chương trình trong hàm là các lệnh của Matlab
Các biến chỉ có tác dụng nội trong hàm vừa khai báo
Tên của các biến được cách nhau bằnh dấu phẩy (,)
Trang 531.3.10 Cách tạo hàm trong Matlab
Trang 541.3.10 Cách tạo hàm trong Matlab
Sau khi soạn thảo xong ta save với ten bachai.mQuay lại cửa sổ lệnh và gõ:
Trang 561.3.11 Vẽ các hàm
Ta được đồ thị như sau
Trang 571.3.12 Lưu và lấy dữ liệu
Sau khi nhập dữ liệu save name of data
lấy ra bằng lệnh load name of data
Vd tạo 1 ma trận Lưu ma trận vào một file có tên là luudulieu
Trang 581.3.12 Lưu và lấy dữ liệu
Như vậy đã có một file dữ liệu Khi cần sử dụng file dữ liệu
Trang 59a Lệnh if đơn:
Cú pháp: if <biểu thức logic>
Nhóm lệnh;
end Vd1: tạo file có tên là ifdon.m với nội dung
n=input('nhap so phan tu n = ');
a1=input('nhap phan tu thu nhat a1 = ');
if a1<=0 disp('nhap a1 lon hon 0');
Trang 60end Nhóm lệnh 4;
1.3.13.1 Các câu lệnh điều kiện
Trang 61Vd2: tạo file có tên là iflong.m
Trang 62c Lệnh if…else
Cú pháp: if <biểu thức logic>
Nhóm lệnh A else
Nhóm lệnh B end
Vd3: tạo file có tên là lenhelse.m
Trang 64Vd4:
Nhập một điểm bất kỳ từ bàn phím và phân loại điểm theo tiêu chuẩn sau.Nếu điểm nhập vào
0 ≤ Diem < 5 => in ra màn hình ‘hoc luc yeu’
5 ≤ Diem < 7 => in ra màn hình ‘hoc luc trung binh’
7 ≤ Diem < 8 => in ra màn hình ‘hoc luc kha’
8 ≤ Diem ≤ 10 => in ra màn hình ‘hoc luc gioi’
Nếu nhập một điểm bất kỳ nằm ngoài khoảng 0
÷ 10 sẽ không in ra màn hình dòng chữ nào
1.3.13.1 Các câu lệnh điều kiện
Trang 65e Kết hợp cấu trúc elseif và else
1.3.13.1 Các câu lệnh điều kiện
Trang 671.3.13.1 Các câu lệnh điều kiện
VD:
disp('CHON [1] NHAP MA TRAN')disp('CHON [2] MA TRAN NGHICH DAO')chon=input('Nhap so ban chon:')
switch chon
case 1 nhóm lệnh 1case 2 nhom lệnh 2
………
end
Trang 681.3.13.2 Các lệnh lặp
a Vòng lặp for:
Cú pháp: for i= imin : ∆ i: imax
nhóm lệnh ; end
∆ i: bước nhảy có giá trị mặc định là 1, có thể thay đổi Vd1: tạo file có tên là lenhfor.m tính n!
Trang 69b Vòng lặp for lồng nhau:
Cú pháp:
for i= imin : ∆ i: imax
for j= jmin : ∆ j: jmax
nhóm lệnh 2; end
nhóm lệnh 1;
end
1.3.13.2 Các lệnh lặp
Trang 70Vd2: tạo file có tên là lenhforlong.m hiện kết quả ma trận theo cách tính sau
Trang 71c Lặp While
Cú pháp: while < biểu thức>
Nhóm lệnh A;
end Vd3: tạo file lenhwhile.m cho ra màn hình từ "xinchao" với số lần nhập vào từ bàn phím
n=input(' nhap so lan can chao n=') i=0;
Trang 72d Các lệnh break, return, error
Lệnh break: Tác dụng điều khiển chương trình nhảy ra khỏi vòng lặp for hay while gần nó nhất.
Lệnh error: Dùng để thông báo lỗi, hiển thị cho người lập trình biết đó là lỗi gì.
Lệnh return: thường được sử dụng trong các
hàm Lệnh return sẽ cho phép quay trở về thực thi những lệnh nằm trong tác dụng của lệnh return.
1.3.13.2 Các lệnh lặp
Trang 731.3.13.3 Một số hàm thường gặp khi lập trình
sin: hàm sincos: hàm costan: hàm tangasin: hàm arcsinacos: hàm arccosatan: hàm arctangsinh: hàm sin hyperboliccosh: hàm cos hyperbolictanh: hàm tang hyperbolicasinh: hàm arcsin hyperbolicacosh: hàm arccos hyperbolicatanh: hàm arctang hyperbolic
Trang 75… an1
Trang 76 Tên ma trận là một chuỗi ký tự Tên phải bắt đầu
bằng chữ cái, sau đó tùy ý trừ các ký tự đặc biệt Tên đặt bên trái dấu bằng, bên phải dấu bằng là các phần
Trang 771.4.3 Cách nhập ma trận
Có 4 cách vào dữ liệu cho ma trận trong Matlab
Liệt kê trực tiếp các phần tử của ma trận.
Đọc dữ liệu từ một file dữ liệu.
Sử dụng toán tử (:).
Nhập thông qua lệnh "input".
Trang 78 Các phần tử của ma trận được liệt kê trong dấu
>> A=[1+3i 2+2i; 3-i 1-i]
>> syms sinx cosx a
>> b = [ sinx a; a cosx]
1.4.3.1 Liệt kê trực tiếp các phần tử của ma trận
Trang 79Thông qua lệnh "load" cho phép lấy dữ liệu của
ma trận lưu trữ trước từ file mat Ví dụ :
Trang 801.4.3.3 Sử dụng toán tử (:) Nếu các phần tử trong cùng hàng của ma trận là các số cách đều nhau
những giá trị xác định ta có thể dùng toán tử (:) để nhập ma trận một cách nhanh chóng.
Ví dụ:
>> A=[1:3; 4:6; 7:9]
1.4.3.4 Nhập thông qua lệnh "input"
>> input('Nhap gia tri cho ma tran C = ')
Trang 81 Khi kết thúc một câu lệnh có thể dùng dấu (; ) hoặc không dùng dấu (;)
+ Nếu dùng dấu (;) câu lệnh được thực hiện nhưng kết quả không hiện ra màn hình
+ Nếu không dùng dấu ( ; ) câu lệnh được thực hiện và kết quả được hiện ra màn hình.
Sau khi ma trận được nhập, kết quả được lưu trong Workspace và có thể sử dụng cho các lệnh tiếp theo.
Chú ý
Trang 821.4.4 Xử lý trong ma trận
Biến = giới hạn đầu : bước chạy : giới hạn cuối
Giới hạn đầu, giới hạn cuối, bước chạy có thể là các số nguyên
hoặc số thực Bước chạy có thể dương hoặc âm
VD1: Tạo 1 vectơ x chạy từ 1 đến 7 với bước chạy tiến là 2
>>x=1:2:7
x =
1 3 5 7
1.4.4.1 Tạo véctơ:
Trang 841.4.4 Xử lý trong ma trận
VD:
>> A=[1:3; 4:6; 7:9]
A =
1 2 3
4 5 6
7 8 9
>> B=A(2:3,1:2) 1.4.4.3 Gọi 1 ma trận con từ một ma trận lớn
Trang 861.4.5 Một số ma trận đặc biệt
1.4.5.2 Ma trận 0 (zero)
<< zeros(n)
<< zeros(m,n) Hàm zeros(m,n) là ma trận cỡ kích thước m×n chứa toàn số 0.Nếu tham số của hàm chỉ chứa 1 giá trị thì hàm là ma trận vuông 1.4.5.3 Ma trận 1 (one)
>> ones(n)
Hàm ones được định nghĩa giống như hàm zeros nhưng
số 0 được thay bằng số 1
Trang 87vị trí khác phần tử có giá trị 0
Khi hàm chỉ có một giá trị tham số thì ma trận đường chéo mở rộng sẽ trở thành ma trận đường chéo đặc biệt
Trang 89a Phép nhân ma trận(số cột của A =số hàng của B)
C = A*B khi Cij = ΣAik.Bkj
b Phép chia ma trận: >> C=A/B
1.4.6.5 Phép luỹ thừa và số mũ của ma trận:>> B=A^2
1.4.6.6 Phép quay ma trận: >> B=rot90(A)
1.4.6.7.Phép đảo ma trận:
>> b=fliplr(a):Đảo các phần tử của ma trận từ trái sang phải
>> c=flipud(a):đảo ma trận từ trên xuống dưới
1.4.6.8 Tính định thức ma trận: >> det(A)
Trang 90a.Nhân hai đa thức
y1 = anxn + an-1xn-1 + + a0y2 = bnxn + bn-1xn-1 + + b0Bước1: Lập 2 ma trận hàng tên y1, y2 có các phần tử là các
hệ số từ an đến a0 và bn đến b0 giảm dần theo bậc của
phương trình (Nếu hệ số nào không có ghi 0)
Bước 2: dùng lệnh conv để nhân 2 đa thức.
>>y3= conv(y1,y2)
Chú ý: hàm conv chỉ thực hiện nhân 2 đa thức Muốn nhân
nhiều đa thức với nhau ta phải thực hiện nhiều lần hàm conv
1.4.7.Ứng dụng các phép toán ma trận
Trang 91b.Lệnh tìm nghiệm của đa thức
y = anx n + an-1x n-1 + + a0
Bước1: Lập 1 ma trận hàng có các phần tử là các hệ số từ an đến a0 giảm dần theo bậc của phương trình
Bước 2: Dùng lệnh Roots để giải ma trận vừa tạo được
VD y=5x^5+6x^4-2x^3+x-3
>> y=[5 6 -2 0 1 -3];
>> nghiem=roots(y)
nghiem = -1.1688 + 0.17269i -1.1688 - 0.17269i 0.75056 0.19348 + 0.73163i 0.19348 - 0.73163i
1.4.7.Ứng dụng các phép toán ma trận
Trang 92c.Lệnh tìm lại đa thức khi biết nghiệm
Bước 1: Lập 1 ma trận hàng có các phần tử là các nghiệm của
đa thức
Bước 2: Dùng lệnh poly để tìm ra đa thức.
Ví dụ: Sử dụng ví dụ trên khi biết nghiệm
Trang 93Ta sẽ đi tìm phương trình như sau
>> dathuc*5
ans =
5 6.0004 -2 -0.00015992 1.0003 -3.0002
Do sai số của phép làm tròn y=5x5+6x4-2x3+x-3
1.4.7.Ứng dụng các phép toán ma trận