Bài giảng Tin học chuyên ngành - Chương 3: Lập trình trong Matlab - Hoàng Xuân Dương

Bài giảng Tin học chuyên ngành  
76  
Õ
CHƯƠNG 3:  
Giảng viên: Hoàng Xuân Dương  
38  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
77  
I. PHẦN TỬ CƠ BẢN  
II. HÀM TOÁN HỌC  
III. CÁC DẠNG FILE  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
V. CẤU TRÚC ĐIỀU KHIỂN  
VI. BÀI TẬP  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
78  
I. PHẦN TỬ CƠ BẢN  
1. Giới hạn của các giá trị tính toán trong Matlab  
ƒ
Đối với phần lớn máy tính, khoảng giá trị cho phép từ  
10-323 đến 10308.  
ƒ
Nếu có giá trị tràn số mũ trên, nó được biểu diễn bởi  
inf (số vô hạn)  
ƒ
ƒ
Nếu tràn mũ dưới, nó được biểu diễn là 0  
Chia cho 0 là toán tử không hợp lệ, kết quả là inf.  
Matlab sẽ cảnh báo và sử dụng giá trị inf để tính tiếp.  
39  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
79  
I. PHẦN TỬ CƠ BẢN  
2. Biến string:  
ƒ
ƒ
Chuỗi ký tự được đặt giữa 2 dấu nháy đơn  
Chuỗi ký tự là một mảng nhiều ký tự. Ký tự được lưu  
dưới dạng mã ASCII.  
>> name= ‘Trường Đại học DL Công Nghệ Sài Gòn’  
Có thể truy xuất đến từng phần tử chuỗi  
>> fprintf (‘Trường tôi là %s\n’, name(8:35));  
Kết hợp các string tạo string mới  
ƒ
ƒ
ƒ
>> text1=‘Tôi học tại’; text=[text1 ‘ ’ name];  
Nhập string từ bàn phím:  
>> str= input(‘Nhap vao mot chuoi’,’s’);  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
80  
I. PHẦN TỬ CƠ BẢN  
2. Biến string:  
Các lệnh với biến string:  
Hàm  
char  
Ý nghĩa  
Tạo mảng ký tự  
double  
Đổi chuỗi sang mã ASCII  
Đổi số sang chuỗi  
num2str  
str2num  
int2str  
Đổi chuỗi sang số  
Đổi số nguyên sang chuỗi  
Đổi chuỗi sang ma trận  
Đổi ma trận sang chuỗi  
str2mat  
mat2str  
40  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
81  
II. HÀM TOÁN HỌC  
1. Hàm toán học cơ bản  
Hàm  
Ý nghĩa  
round  
Làm tròn về số nguyên gần nhất  
Làm tròn về 0  
fix  
floor  
Làm tròn nhỏ hơn  
Làm tròn lớn hơn  
ln(x)  
ceil  
log(x)  
log10(x)  
pow2(x)  
nextpow2(N)  
log thập phân  
Lũy thừa cơ số 2  
Tìm p: 2p=N  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
82  
II. HÀM TOÁN HỌC  
1. Hàm toán học cơ bản  
Ví dụ:  
>> a=[-1.9 -0.2 3.4 5.6 7 2.4 +3.6i];  
>> fix(a)  
-1.0000 0 3.0000 5.0000 7.0000 2.0000 0+3.0000i  
>> ceil(a)  
-1.0000 0 4.0000 6.0000 7.0000 3.0000 0+4.0000i  
>> floor(a)  
-2.0000 -1.0000 3.0000 5.0000 7.0000 2.0000 0+3.0000i  
>> round(a)  
-2.0000 0 3.0000 6.0000 7.0000 2.0000 0+4.0000i  
41  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
83  
II. HÀM TOÁN HỌC  
2. Hàm lượng giác cơ bản:  
Hàm  
sin(x)  
Ý nghĩa  
sin của x khi x có đơn vị radian  
cos của x khi x có đơn vị radian  
tan của x khi x có đơn vị radian  
∈[-π/2,π/2] khi x ∈ [-1,1]  
∈[0,π] khi x ∈ [-1,1]  
cos(x)  
tan(x)  
asin(x)  
acos(x)  
atan(x)  
khi x ∈ [-π/2,π/2]  
Đổi radian sang độ và ngược lại:  
angle_degrees=angle_radians*(180/pi)  
angle_radians=angle_degrees*(pi/180)  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
84  
III. CÁC DẠNG FILE  
1. Script file (m file):  
ƒ
Các chương trình, thủ tục bao gồm các dòng lệnh theo  
một thứ tự nào đó do người sử dụng viết ra được lưu  
trong các file *.m. Được gọi là script file  
ƒ
ƒ
ƒ
Dùng trình soạn thảo edit của Matlab để viết hàm  
Lưu dưới dạng ASCII  
Có thể chạy giống các lệnh, thủ tục của Matlab  
42  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
85  
Ví dụ: tập tin canhhoa.m có nội dung như sau:  
% M-file script tao ra 4 hinh canh hoa  
theta=-pi:0.01:pi;  
rho(1,:)=2*sin(5*theta).^2;  
rho(2,:)=cos(10*theta).^3;  
rho(3,:)=sin(theta).^2;  
rho(4,:)=5*cos(3.5*theta).^3;  
for i=1:4  
polar(theta,rho(i,:))  
pause  
end  
Trong command window:  
>> help canhhoa  
M-file script tao ra 4 hinh canh hoa  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
86  
>> echo on  
>> canhhoa  
theta=-pi:0.01:pi  
rho(1,:)=2*sin(5*theta).^2;  
rho(2,:)=cos(10*theta).^3;  
rho(3,:)=sin(theta).^2;  
rho(4,:)=5*cos(3.5*theta).^3;  
for i=1:4  
polar(theta,rho(i,:))  
pause  
polar(theta,rho(i,:))  
pause  
polar(theta,rho(i,:))  
pause  
polar(theta,rho(i,:))  
pause  
43  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
87  
III. CÁC DẠNG FILE  
2. Hàm và tạo hàm trong Matlab:  
ƒ
Giống như script file. Cấu trúc tổng quát của hàm:  
function [y1,y2,…]=function_name (a,b,c…)  
% help text in the usage of the function  
%.......  
:
end  
ƒ
Có thể chỉ là một nhóm dòng lệnh hay nhận vào các  
đối số và trả về kết quả  
ƒ
ƒ
Có thể gọi hàm từ các hàm, script khác  
Các biến trong hàm là các biến cục bộ  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
88  
Qui tắc viết hàm M-files:  
1) Bắt đầu bằng từ function, sau đó lần lượt các tham số đầu  
ra, dấu bằng, tên hàm và các tham số đầu vào  
2) Một số dòng sau tên hàm bắt đầu bằng dấu % là các dòng  
chú thích về cách dùng hàm, nó được bỏ qua khi chạy.  
Được hiển thị khi lệnh help yêu cầu hàm  
3) Matlab có thể chấp nhận nhiều tham số ngõ vào và tham  
số ngõ ra  
4) Nếu hàm trả về nhiều hơn một giá trị, các giá trị được trả  
về như một vector  
5) Nếu hàm nhận nhiều tham số ngõ vào, các tham số sẽ  
được liệt kê trong dấu ngoặc đơn  
6) Kết thúc hàm là phát biểu ‘end’  
44  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
89  
III. CÁC DẠNG FILE  
2. Hàm và tạo hàm trong Matlab (tt)  
Ví dụ 1:  
Thực hiện hàm luythua.m như sau:  
function y=luythua(a,b)  
% Ham tinh a^b  
y=a^b;  
Trong command window:  
>> luythua(2,3)  
ans = 8  
>> c=luythua(4,2)  
c = 16  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
90  
III. CÁC DẠNG FILE  
2. Hàm và tạo hàm trong Matlab (tt)  
Ví dụ 2:  
Để giải phương trình bậc 2: ax2+bx+c=0. Thực hiện hàm  
tính nghiệm như sau, lưu với tên quadroot.m  
function [x1,x2]=quadroot(a,b,c)  
% Hàm tính nghiệm của phương trình bậc 2  
radical=sqrt(b^2-4*a*c);  
x1=(-b+radical)/(2*a);  
x2=(-b-radical)/(2*a);  
45  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
91  
III. CÁC DẠNG FILE  
2. Hàm và tạo hàm trong Matlab (tt)  
Chương trình có tên ptbac2.m có nội dung như sau:  
disp('Chuong trinh giai phuong trinh bac 2: ax^2+bx+c=0');  
a=input('Nhap a: ');  
b=input('Nhap b: ');  
c=input('Nhap c: ');  
[x1,x2]=quadroot(a,b,c);  
% gọi hàm quadroot  
disp('Nghiem cua phuong trinh: ');  
fprintf('x1=%f\n',x1);  
fprintf('x2=%f\n',x2);  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
92  
III. CÁC DẠNG FILE  
2. Hàm và tạo hàm trong Matlab (tt)  
Trong Command window:  
>> [a,b]=quadroot(1,-3,2)  
a = 2  
b = 1  
>> ptbac2  
Chuong trinh giai phuong trinh bac 2: ax^2+bx+c=0  
Nhap a: 1  
Nhap b: -3  
Nhap c: 2  
Nghiem cua phuong trinh:  
x1=2.000000  
x2=1.000000  
Gảng vnHng Xuân Dưng  
46  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
93  
III. CÁC DẠNG FILE  
3. File dữ liệu:  
Matlab phân biệt 2 loại dữ liệu khác nhau:  
„
Mat-files: thích hợp cho dữ liệu chương trình Matlab.  
Phần mở rộng là .mat  
>> save <tên file> <tên ma trận>;  
>> load <tên file>;  
„
ASCII files: cho dữ liệu được chia sẻ với các chương  
trình khác. Phần mở rộng là .dat  
>> save <tên file>.dat <tên ma trận> /ascii;  
>> load <tên file>.dat;  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
94  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
1. Các phép toán quan hệ:  
Toán tử  
<
Ý nghĩa  
Nhỏ hơn  
<=  
>
Nhỏ hơn hoặc bằng  
Lớn hơn  
>=  
==  
~=  
Lớn hơn hoặc bằng  
Bằng  
Không bằng  
Phép so sánh 2 ma trận là so sánh từng phần tử. Kết quả  
sinh ra ma trận {0,1} cùng cỡ. Nếu phép so sánh đúng,  
các phần tử =1, ngược lại thì các phần tử bằng 0  
Gảng vnHng Xuân Dưng  
47  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
95  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
1. Các phép toán quan hệ (tt)  
Ví dụ:  
>> a=[3 4 3; 4 5 6];  
>> b=[1 2 3; 7 8 6];  
>> a==b  
ans =  
0
0
0
0
1
1
>> a>b  
ans =  
1
0
1
0
0
0
>> a>=b  
ans =  
1
0
1
0
1
1
Giảng viên: Hoàng Xuân Dương  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
96  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
2. Các phép toán logic:  
Toán tử  
not  
Ký hiệu  
~
&
|
and  
or  
ƒ
ƒ
Thứ tự các toán tử trong biểu thức logic từ cao đến  
thấp là not, and, or. Tuy nhiên có thể dùng ngoặc đơn  
để thay đổi  
Trong Matlab, tất cả các giá trị khác không đều coi như  
đúng (true), còn giá trị 0 được coi như sai (false)  
48  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
97  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
2. Các phép toán logic (tt)  
Ví dụ:  
>> b=[1 1 0; 1 0 1]  
>> a=[0 1 0; 0 0 1]  
>> a&b  
ans =  
0
0
1
0
0
1
>> a|b  
ans =  
1
1
1
0
0
1
>> ~a  
ans =  
1
1
0
1
1
0
>> 1 | 0 & ~ 1  
Giảng viên: Hoàng Xuân Dương  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
98  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
3. Các hàm quan hệ và logic:  
Hàm  
Ý nghĩa  
Trả về vector hàng có các phần tử =1 nếu tồn tại bâ't  
cu phần tử cột của x khác 0, ngược lại =0  
any(x)  
Trả về vector hàng có các phần tử =1 nếu tất cả  
phần tử cột của x khác 0, ngược lại =0  
all(x)  
find(x)  
exist(‘a’)  
Trả về vector chứa chỉ số các phần tử của x khác 0  
= 1 nếu a là biến, = 2 nếu là file, = 0 nếu a không  
tồn tại…  
Trả về ma trận cùng cỡ có các phần tử = 1 nếu các  
phần tử tương ứng của x là nan, ngược lại = 0  
isnan(x)  
Gảng vnHng Xuân Dưng  
49  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
99  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
3. Các hàm quan hệ và logic (tt)  
Hàm  
Ý nghĩa  
Trả về ma trận cùng cỡ có các phần tử = 1 nếu  
các phần tử tương ứng của x hữu hạn, = 0 nếu  
vô hạn hoặc nan  
finite(x)  
isempty(x)  
isstr(x)  
= 1 nếu x rỗng, ngược lại = 0  
= 1 nếu x là một chuỗi, ngược lại = 0  
So sánh 2 chuỗi, =1 nếu 2 chuỗi giống hệt  
nhau, ngược lại =0. Phân biệt hoa-thường, dấu  
cách, đầu dòng  
strcmp(y1,y2)  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
100  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
3. Các hàm quan hệ và logic (tt)  
Ví dụ:  
>> a=[0 1 2; 0 0 3];  
>> any(a)  
ans = 0  
>> all(a)  
ans = 0  
>> find(a)  
ans =  
1
0
1
1
3
5
6
50  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
101  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
3. Các hàm quan hệ và logic (tt)  
Ví dụ:  
>> a=[nan 12 4 0; inf 3 8 nan]  
a = NaN 12  
Inf  
>> isnan(a)  
4
0
3
8 NaN  
ans = 1  
0
0
0
0
0
0
1
>> finite(a)  
ans = 0  
0
1
1
1
1
1
0
>> isempty(a)  
ans = 0  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
102  
IV. BIỂU THỨC QUAN HỆ VÀ LOGIC  
3. Các hàm quan hệ và logic (tt)  
Ví dụ:  
>> text1='Lop HCDH';  
>> text2='Lop';  
>> text3='HCDH';  
>> isstr(text1)  
ans = 1  
>> strcmp(text1,text2)  
ans = 0  
>> strcmp(text1,[text2 ' ' text3])  
ans = 1  
51  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
103  
V. CẤU TRÚC ĐIỀU KHIỂN  
1. Lệnh if else elseif:  
Có các dạng sử dụng  
if biểu thức logic  
các phát biểu  
end  
hoặc  
if biểu thức logic  
các phát biểu 1  
else  
các phát biểu 2  
end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
104  
V. CẤU TRÚC ĐIỀU KHIỂN  
1. Lệnh if else elseif (tt)  
hoặc  
if biểu thức logic 1  
các phát biểu 1  
elseif biểu thức logic 2  
các phát biểu 2  
end  
52  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
105  
V. CẤU TRÚC ĐIỀU KHIỂN  
1. Lệnh if else elseif (tt)  
Ví dụ 1:  
if rem(a,2)==0  
disp('la mot so chan')  
b=a/2;  
end  
if n>0  
disp('la so duong')  
elseif n==0  
disp('la so 0')  
else  
disp('la so am')  
end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
106  
V. CẤU TRÚC ĐIỀU KHIỂN  
1. Lệnh if else elseif (tt)  
Ví dụ 2: Hàm ngay_trong_thang.m  
function y = ngay_trong_thang(th,nam)  
if (th==4)|(th==6)|(th==9)|(th==11)  
y=30  
elseif (th==2)  
if (rem(nam,4)~=0)  
y=28  
else  
y=29  
end  
else  
y=31  
end  
Gảng vnHng Xuân Dưng  
53  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
107  
V. CẤU TRÚC ĐIỀU KHIỂN  
2. Lệnh switch case:  
Chọn nhiều trường hợp  
switch biểu thức (vô hướng hay chuỗi)  
case trị_1  
Các phát biểu 1  
case trị_2  
Các phát biểu 2  
……  
otherwise  
Các phát biểu khác  
end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
108  
V. CẤU TRÚC ĐIỀU KHIỂN  
2. Lệnh switch case (tt)  
Ví dụ 1:  
switch input_num  
case -1  
disp(‘negative one’);  
case 0  
disp(‘zero’);  
case 1  
disp(‘positive one’);  
otherwise  
disp(‘other value’);  
end  
Gảng vnHng Xuân Dưng  
54  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
109  
V. CẤU TRÚC ĐIỀU KHIỂN  
2. Lệnh switch case (tt)  
Ví dụ 2:  
switch var  
case 1  
disp(‘1’);  
case {2,3,4}  
disp(‘2 or 3 or 4’);  
case 5  
disp(‘5’);  
otherwise  
disp(‘something else’);  
end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
110  
V. CẤU TRÚC ĐIỀU KHIỂN  
c. Lệnh while:  
while biểu thức logic  
các phát biểu  
end  
Ví dụ 1:  
n=1;  
while prod(1:n) < 1e100  
% prod tính tích các phần  
n=n+1;  
end  
% tử cột của vectơ hay  
% ma trận  
55  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
111  
V. CẤU TRÚC ĐIỀU KHIỂN  
4. Lệnh for:  
for index=star:increment:end  
các biểu thức  
end  
Ví dụ 1:  
x(1)=1;  
for i=2:6  
x(i)=2*x(i-1);  
end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
112  
V. CẤU TRÚC ĐIỀU KHIỂN  
4. Lệnh for (tt)  
Ví dụ 2: Chương trình khởi tạo giá trị cho ma trận A(mxn)  
for i=1:m  
for j=1:n  
A(i,j)=i+j;  
end  
end  
56  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
113  
V. CẤU TRÚC ĐIỀU KHIỂN  
5. Gián đoạn bằng continue, break và return  
•
Trong vòng lặp for hay while, gọi continue thì ngay lập  
tức chu trình chuyển sang bước lặp kế tiếp, mọi lệnh  
chưa thực hiện của vòng lặp hiện tại sẽ bị bỏ qua  
•
•
Lệnh break mạnh hơn, ngừng vòng lặp đang tính  
Nếu break sử dụng ngoài vòng lặp for và while, nhưng  
nằm trong script file hoặc function thì sẽ dừng tại vị trí  
của break  
•
Lệnh return sử dụng để kết thúc sớm hàm trước khi  
gặp lệnh end  
CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB  
114  
V. CẤU TRÚC ĐIỀU KHIỂN  
5. Gián đoạn bằng continue, break và return (tt)  
for m=3:1:7  
for n=2:1:m-1  
if mod(m, n) ~=0  
continue;  
end  
fprintf('%2d không là một số nguyên tố !\n',m)  
break;  
end  
if n==m-1  
fprintf('%2d là một số nguyên tố !\n',m)  
end  
end  
57  
Tải về để xem bản đầy đủ
pdf 36 trang myanh 29960 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học chuyên ngành - Chương 3: Lập trình trong Matlab - Hoàng Xuân Dương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_chuyen_nganh_chuong_3_lap_trinh_trong_matl.pdf