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.
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:
- Bài giảng Lập trình Matlab cơ bản - Võ Thiện Lĩnh.pdf