Bài giảng Lập trình Matlab cơ bản - Võ Thiện Lĩnh

1. Giới thiệu Matlab

2. Cơ sở về Matlab

3. Function files và Script files.

4. Đồ họa

5. Tạo giao diện trong Matlab.

6. Simulink.

pdf41 trang | Chuyên mục: MATLAB | Chia sẻ: dkS00TYs | Lượt xem: 3675 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Lập trình Matlab cơ bản - Võ Thiện Lĩnh, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
III. Bài tập đề nghị 
Bài 1. Viết chương trình tính chu vi và diện tích một
tam giác theo yêu cầu sau:
• Hiện yêu cầu nhập các cạnh a,b,c
• Xét điều kiện thành lập một tam giác:
−ĐK cần: a,b,c >0
−ĐK đủ: tổng 2 cạnh > cạnh còn lại
−Nếu không thỏa đk thì hiện thông báo lỗi.
• Tính chu vi + diện tích và hiện KQ.
Bài 2. Làm lại bài 1 với yêu cầu hàm có đối số vào/ra
III. Bài tập đề nghị
Giải bài 1:
1. a=input ('nhap vao do dai canh a : ');
2. b=input ('nhap vao do dai canh b : ');
3. c=input ('nhap vao do dai canh c : ');
4. if (a>0)&(b>0)&(c>0)&(a+b>c)&(c+b>c)&(a+c>b)
5. disp ('chu vi tam giac la : ');
6. cv=a+b+c
7. p=cv/2;
8. disp ('dien tich tam giac la : ');
9. s=sqrt(p*(p-a)*(p-b)*(p-c))
10. else 
11. disp ('3 canh khong tao thanh tam giac ')
12. end
5/9/2013
24
III. Bài tập đề nghị
Bài 3: Nhập vào dãy số, tìm giá trị lớn nhất trong dãy?
1. n=input('nhap vao so phan tu cua day : ');
2. for i=1:n
3. a(i)=input (['a(',num2str(i),')=']);
4. end
5. disp ('day vua nhap la : '); disp(a)
6. max=a(1);
7. for i=1:n
8. if max<a(i)
9. max=a(i);
10. End;
11. End;
12. disp (['gia tri lon nhat cua day la’,num2str(max)])
III. Bài tập đề nghị
Bài 4: Kiểm tra xem một số n có phải là số nguyên tố không? 
n=input('nhap vao gia tri n : ');
dem=0;
for i=1:n
if rem (n,i)==0
dem=dem+1;
end
end;
if dem==2
disp ('so vua nhap la so nguyen to')
else
disp ('so vua nhap khong phai so nguyen to')
end 
5/9/2013
25
III. Bài tập đề nghị
III. Bài tập đề nghị
Bài 6: Tính n! ?
Bài 7: Tính biểu thức sau ứng với giá trị n nhập vào:
function m=giaithua(n)
if (n==1)|(n==0)
m=1;
return;
end
m=n*giaithua(n-1);
!
...
!4!3!2!1
1)(
432
n
xxxxxxS
n
n 
5/9/2013
26
BÀI 4: ĐỒ HỌA
• NỘI DUNG:
I. Đồ họa 2-D
II. Đồ họa 3-D
I. Đồ họa 2-D
1. Đặc tả kiểu đường vẽ
• t = [0:pi/100:2*pi] ;
• y = sin(t); 
• plot(t,y,‘:'); % vẽ đường chấm chấm 
• grid on %tạo lưới
5/9/2013
27
2.Đặc tả màu và kích thước đường vẽ
Để đặc tả màu và kích thước đường vẽ ta dùng các tham số 
sau: 
• LineWidth: độ rộng đường thẳng,tính bằng số điểm 
• MarkerEdgeColor: màu của các cạnh của khối đánh dấu 
• MarkerFaceColor: màu của khối đánh dấu 
• MarkerSize: kích thước của khối đánh dấu 
Màu được xác định bằng các thông số:
3. Các dạng đánh dấu trên đồ thị
5/9/2013
28
Ví dụ :
• x = -pi : pi/10 : pi; 
• y = tan(sin(x)) - sin(tan(x)); 
• plot(x,y,'--rs','LineWidth',2,'MarkerEdgeColor','k',... 
'MarkerFaceColor','g','MarkerSize',10)
Đường cong y = f(x) có các đặc tả sau :
- đường vẽ là đường đứt nét(--) 
- khối đánh dấu hình vuông (s), đường vẽ màu đỏ(r) 
- đường vẽ rộng 2 point 
- các cạnh của khối đánh màu đen 
- khối đánh dấu màu green 
- kích thước khối đánh dấu 10 point 
Đặt các thông số cho trục
• Ví dụ:
1. x=[0 1 2 3]; 
2. y=[0 4 1 5]; 
3. h=plot(x,y) 
• Để thấy các thuộc tính đồ họa của hàm plot ta dùng 
lệnh
• set(h)
• Bây giờ ta thay đổi thuộc tính của đồ thị:
1. set(h,’Color’, ‘r’) %dat lai mau do 
2. set(h,'LineWidth',6) %dat do rong duong 
3. set(h,'Marker','v','MarkerSize',6) 
5/9/2013
29
Ghi nhãn lên các trục tọa độ
Ví dụ
1. x=[-5:0.01:5]; 
2. y1=x.^2;
3. plot(x,y1,'r--')
4. xlabel('Truc x');
5. ylabel('Truc y');
6. legend('y1=x^2') 
7. text(-3,9,' \leftarrow x^2','FontSize',18)
8. gtext('Do thi')
5/9/2013
30
4.Vẽ nhiều hình trên 1 trục
Ví dụ: Vẽ 2 hàm y1=x2 và 
y2=cos3x, (rad) trên 
cùng 1 đồ thị.
Cách 1:
1. x=[-5:0.01:5]; 
2. y1=x.^2;
3. y2=cos(3*x); 
4. plot(x,y1,x,y2,'r--')
5. xlabel('Truc x');
6. ylabel('Truc y');
7. legend('y1=x^2','y2=cos 
3x') 
Cách 2:
1. x=[0:0.01:5]; 
2. y1=x.^2;
3. y2=cos(3*x); 
4. grid on
5. hold on
6. plot(x,y1,'r--')
7. plot(x,y2, 'm--')
8. xlabel('Truc x');
9. ylabel('Truc y');
10.hold off
5.Vẽ nhiều trục
• Hàm: 
subplot(m,n,p) 
subplot(mnp)
• subplot(2,2,[1 3]) 
subplot(2,2,2) 
subplot(2,2,4)
• subplot(2,2,1:2) 
subplot(2,2,3) 
subplot(2,2,4)
x=[-5:0.01:5];
for n = 1:8
subplot(4,2,n)
plot(x,sin(n*pi*x))
end 
5/9/2013
31
5.Vẽ nhiều trục
• Ví dụ:
1. function dieucheAM(fc,fm)
2. Ac = 1; % Carrier Amplitude
3. Am = 1; % Baseband Amplitude
4. m = Am/Ac;
5. t = linspace(0,1,100*fc); 
6. c=Ac*cos(2*pi*fc*t); 
7. e = (Ac + Am*cos(2*pi*fm*t)); 
8. u = (Ac + Am*cos(2*pi*fm*t)).*cos(2*pi*fc*t); %DSB-AM
9. subplot(1,3,1);plot(t,e,'r');grid on
10. subplot(1,3,2);plot(t,c,'r');grid on
11. subplot(1,3,3);plot(t,u);grid on
6.Các lệnh vẽ đồ thị khác
• Lệnh BAR: vẽ đồ thị dạng cột
1. Y = round(rand(5,3)*10); 
2. subplot(2,2,1); bar(Y,'group') 
3. title 'Group' 
4. subplot(2,2,2); bar(Y,'stack') 
5. title 'Stack' 
6. subplot(2,2,3); barh(Y,'stack') 
7. title 'Stack' 
8. subplot(2,2,4) ; bar(Y,1.5) 
9. title 'Width = 1.5'
• Lệnh POLAR : vẽ hệ tọa độ cực
1. t = -pi:0.01:pi; 
2. polar(t, sin(t))
1 2 3 4 5
0
2
4
6
8
Group
1 2 3 4 5
0
5
10
15
20
Stack
0 5 10 15 20
1
2
3
4
5
Stack
1 2 3 4 5
0
2
4
6
8
Width = 1.5
5/9/2013
32
6.Các lệnh vẽ đồ thị khác
• Lệnh POLAR : vẽ hệ tọa độ cực
Ví dụ 1:
t = -pi:0.01:pi; 
polar(t, sin(t)) 
Ví dụ 2:
x=0:0.1:2*pi;
polar(x,abs(sin(2*x).*cos(2*x)))
6.Các lệnh vẽ đồ thị khác
• Lệnh STAIRS: vẽ đồ thị dạng bậc thang
1. x = -pi:0.2:pi; 
2. stairs(x,sin(x)) 
3. xlabeL('Truc x') 
4. ylabel('y = stairs(x,sin(x)') 
5. grid on
-4 -3 -2 -1 0 1 2 3 4
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Truc x
y 
= 
st
ai
rs
(x
,s
in
(x
)
5/9/2013
33
6.Các lệnh vẽ đồ thị khác
• Lệnh STEM: phân bố lược
1. x = 0:0.1:4; 
2. stem(x,exp(x)) 
3. xlabeL('Truc x') 
4. ylabel('y = stairs(x,sin(x)') 
5. grid on 
0 0.5 1 1.5 2 2.5 3 3.5 4
0
10
20
30
40
50
60
Truc x
y 
= 
st
ai
rs
(x
,s
in
(x
)
Ví dụ 3:
Soạn thảo script file có tên bai3.m để lập biểu đồ tổng số sinh viên Điện 
Tử - Tin học tốt nghiệp tại trường X từ năm 1996 đến 2001 với dữ liệu 
như sau:
• % Lap bieu do tong so sinh vien Dien tu – Tin hoc tot nghiep
• %
1. svdt=[38 33 36 31 60 70];
2. svth=[48 54 120 92 110 131];
3. nam=1996:2001;
4. subplot(211), bar(nam,svdt);
5. title('Sinh vien Dien tu tot nghiep tu 1996-2001');
6. subplot(212), bar(nam,svth);
7. title('Sinh vien Tin hoc tot nghiep tu 1996-2001');
8. colormap(cool(5));
Colormap 
5/9/2013
34
6.Các lệnh vẽ đồ thị khác
• Lệnh PIE: phân bố % hình tròn 
x=[20 45 15 13 7];
y=[0 0 1 0 0] % 1 để nhấn mạnh phần 15, 
%chọn 0 để chúng dính liền nhau.
pie(x,y)
20%
45%
15%
13%
7%
Lệnh ginput
• fplot('sinc(x)',[-2*pi,2*pi]);
• [x,y]=ginput(3) %lấy tọa độ 3 điểm trên đồ thị
5/9/2013
35
II. ĐỒ HỌA 3D
• Ví dụ:
• >> [x,y,z]=peaks; %hàm có phân bố Gauss
• >> plot3(x,y,z)
• >> mesh(x,y,z) %bề mặt dạng lưới
• >> surf(x,y,z) %tô màu bề mặt
• >> waterfall(x,y,z)
• >> pcolor(x,y,z)%giá trị Z được thể hiện với 
giá trị màu tương ứng
• >> contour(x,y,z) %lấy đường viền trong 2D
Bài 5: SIMULINK
• Simulink là một phần mềm mở rộng của MATLAB
(Toolbox của Matlab) dùng để mô hình hoá, mô
phỏng và phân tích một hệ thống động, thiết kế hệ
thống điều khiển, thiết kế DSP, hệ thống thông tin
và các ứng dụng mô phỏng khác.
• Simulink được ghép bởi hai từ Simulation và Link.
Simulink cho phép mô tả hệ thống tuyến tính,hệ
phi tuyến, các mô hình trong miền thời gian liên
tục, hay gián đoạn hoặc một hệ gồm cả liên tục và
gián đoạn.
5/9/2013
36
CÁC BLOCKS LIBRARY:
• Thư viện SOURCES
• Thư viện Đồ thị (SINKS) 
• Thư viện Phần Rời Rạc (DISCRETE) 
• Thư viện Phần Tuyến tính (LINEAR)
• Thư viện Phần Phi Tuyến (NONLINEAR)
• Thư viện Phần Đầu Nối (CONECTIONS) 
• Thư viện BLOCKSETS và TOOLBOXES
• ….
Các kiểu dữ liệu
Simulink chấp nhận các kiểu dữ liệu sau :
• double số thực với độ chính xác gấp đôi
• single số thực với độ chính xác đơn
• int8 số nguyên có dấu 8 bit
• uint8 số nguyên không dấu 8 bit
• int16 số nguyên có dấu 16 bit
• uint16 số nguyên khg dấu 16 bit
• int32 số nguyên có dấu 32 bit
• uint32 số nguyên không dấu 32 bit
5/9/2013
37
Các bước để vẽ mô hình 
1.Từ cửa sổ Matlab đánh lệnh simulink. Cửa 
sổ thư viện các khối sẽ xuất hiện
2.Từ cửa sổ thư viện ta nhấp chuột vào
File/New/Model hoặc nhấn Ctrl+ N.
3. Chọn các Block ở các thư viện thích hợp 
và xây dựng mô hình sử dụng thao tác 
"nhấn – kéo – thả" chuột.
Ví dụ 1
• Trong sơ đồ này chọn các khối từ các thư viện:
+ Thư viện các nguồn tín hiệu (Sources): Chọn Sin wave.
+ Thư viện các khối nhận tín hiệu (Sinks): Chọn Scope.
+ Các hàm tuyến tính (continuous): Chọn Integrator.
+ Commonly userd blocks: Chọn Mux.
5/9/2013
38
Ví dụ 2
• Mô phỏng một phương trình dùng để biến đổi độ Celcius
thành độ Fahrenheit là : TF = (9/5)TC + 32
• Trước hết ta khảo sát các khối cần để tạo mô hình:
 khối Ramp trong thư viện Sources để đưa vào tín hiệu nhiệt độ
 khối Constant trong thư viện Sources để tạo hằng số 32
 khối Gain trong thư viện Math để tạo ra hệ số 9/5
 khối Sum trong thư viện Math để cộng hai đại lượng
 khối Scope trong thư viện Sinks để hiển thị kết quả.
Ví dụ 3: Mô phỏng hệ pt
z1 +z2 =1
-z1+z2=1
5/9/2013
39
Ví dụ 4: Mô phỏng pt vi phân
x’(t) = -2x’(t) + u(t)
• Với u(t) là một sóng vuông có biên độ=1 
và tần số =1 rad/sec.
Ví dụ 5: Thiết kế và phân tích hệ thống
5/9/2013
40
Ví dụ 6: Mô phỏng phương trình sau
Sine Wave
Scope
Product2
Product1
Product
eu
Math
Function
-1
Gain1
-1
Gain
80
Constant
Clock
3
1.Nhập vào chuỗi số và in ra kết quả tính 
của:
• A) tổng bình phương các số trong chuỗi?
• B) giai thừa của các phần tử trong chuỗi?
• C) số nguyên tố trong chuỗi?
2. Nhập chuỗi ký tự chữ thường và in ra 
chuỗi ký tự chữ HOA?
3. Nhập vào chuỗi số và in ra chuỗi mới với 
thứ tự ngược lại? 
4. Vẽ đồ thị và tìm cực trị của hàm 
f(x)=x^3+2*x^2-1 ?
5. Tính x^n=?
5/9/2013
41
6. Viết chương trình yêu cầu Nhập liên tiếp
các số và khi nhập số 0 thì dừng nhập.
Tính trung bình cộng các số âm và trung
bình cộng các số dương vừa nhập?

File đính kèm:

  • pdfBài giảng Lập trình Matlab cơ bản - Võ Thiện Lĩnh.pdf