Academia.eduAcademia.edu
Bài tập MATLAB ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 1 Baøi 1 : chöông trình baûng cöûu chöông % lap bang cuu chuong tu 2 den 9 clear con = 'y' ; while con =='y' fact = input('Enter number i:10 ing character:','s'); switch fact case'1' for i = 1:10 fact = 1; fact = fact*i; disp(fact); end case'2' for i = 1:10 fact = 2; fact = fact*i; disp(fact); end case'3' for i = 1:10 fact = 3; fact = fact*i; disp(fact); end case'4' for i = 1:10 fact = 4; fact = fact*i; disp(fact); end case'5' for i = 1:10 fact = 5; fact = fact*i; disp(fact); end SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 2 case'6' for i = 1:10 fact = 6; fact = fact*i; disp(fact); end case'7' for i = 1:10 fact = 7; fact = fact*i; disp(fact); end case'8' for i = 1:10 fact = 8; fact = fact*i; disp(fact); end case'9' for i = 1:10 fact = 9; fact = fact*i; disp(fact); end otherwise disp('wrong number'); end con = input('continue y or n:','s'); end % end of program Baøi 2 : chöông trình duøng leänh For ñeå tính gia thöøa: % dung lenh for de tinh gia thua n = input('Enter positive integer:') fact = 1 for i = 1:n; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 3 fact = fact*i end % end of program Baøi 3 : dung lenh for tinh tong day so s=1+3+5+..+n % dung lenh for tinh tong day so s=1+3+5+..+n n = input('positive integer:') s=0 for i = 1:2:n s=s+i end % end of program Baøi 4: dung lenh for tinh tong day so s=1+3+5+..+n % dung lenh for tinh tong day so s=1+3+5+..+n n = input('positive integer:') s=0 for i = n : -2 : 1 s=s+i end % end of program Baøi 5: caùc pheùp toaùn khoâng tieát tuïc %Beginning of program %lenh switch tinh +,-,*,/ a = input('Enter a:'); b = input('Enter b:'); SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 4 operator = input('Enter operator =,-,*,/:','s'); switch operator case'+' c = a+b; disp(c); case'-' c = a-b; disp(c); case'*' c = a*b; disp(c); case'/' c = a/b; disp(c); otherwise disp('wrong operator'); end % end of program Baøi 6 : chöông trình caùc pheùp toaùn coù tieáp tuïc %Beginning of program %lenh switch continue while tinh +,-,*,/ con = 'y' while con =='y' a = input( 'Enter a :' ); b = input( 'Enter b :' ); operator = input('Enter operator +,-,*, / :' , 's '); switch operator case'+' c = a+b; disp(c); case'-' c = a-b; disp(c); case'*' c = a*b; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 5 disp(c); case'/' c = a/b; disp(c); otherwise disp('wrong operator') end con = input('continue y or n:','s'); end % end of program Baøi 7 : tính toång caùc soá döông: % chuong trinh nhap day so duong va tinh tong cua day so duong % begining of program con ='y'; sum = 0; while con =='y' nun = input('Enter number:'); if nun < 0 continue; else sum = sum + nun; con = input('continue y/n:','s'); end end disp(sum) % end of program Baøi 8 : Caùch söû duïng leänh Breack : % su dung lenh break sum = 0 while sum >=0 nun = input('Enter number:'); if nun <0 break; else SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 6 sum = sum + nun; end disp(sum) end % end of program Baøi 9 : tính toång caùc soá döông . nhaäp caùc soá döông , neáu ta nhaäp 1 soá aâm baát kyø thì chöông trình keát thuùc vaø cho keát quaû laø toång caûu caùc soá döông . % su dung lenh break sum = 0 while sum >=0 nun = input('Enter number:'); if nun <0 break; else sum = sum + nun; end end disp(sum) % end of program Baøi 10 : chöông trình veõ ñöôøng troøn coù taâm 3,2 trong m-file % ve duong tron tam 3,2 t = 0:pi/100:2*pi; x = 3 + 3*cos(t); y = 2 + 3*sin(t); plot(x,y,'m','linewidth',1.5 ,'linestyle' , '+' ),grid xlabel('x') ylabel('y') title('ve duong tron tam 3 2') % End of program . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 7 Baøi 11 : Veõ ñoà thò hình sin(x) baùm ñoäng : % ve do thi cua ham sin clear x=0; y=sin(x); h=0.01; p=plot(x,y,'k','linestyle','.','EraseMode','none','MarkerSize',5); axis([0 16 -1 1]),grid for x=0:pi/100:5*pi y=sin(x); set(p,'XData',x,'YData',y); drawnow pause(0.01) xlabel('x'),ylabel('Y') title('ve sin(x) bam dong') end % En of program. Baøi 12 : Toïa ñoä cöïc Caùch 1: % toa do cuc su dung ham polar: % beginning of program theta=[0.0:0.1:10.0]; r1=theta; r2=5*cos(theta)+5; h(1)=polar(theta,r1,'m'); set(h(1),'markersize',2*6); hold on h(2)=polar(theta,r2,'r'); set(h(2),'Linewidth',5); hold off title('polar(theta,r...)'''); SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 8 legend(h,' r = \theta','r = 5cos(\theta)+ 5',-1); % End of program Caùch 2 : toa do cuc su dung ham plot: % Beginning of program: theta=[0.0:0.1:10.0]; r1=theta; r2=5*cos(theta)+5; [x1,y1] = pol2cart(theta,r1); [x2,y2] = pol2cart(theta,r2); plot(x1,y1,'r','Markersize',2*6); hold on plot(x2,y2,'b','linewidth',5); axis('equal') title('polar using plot(x,y,...)'''); legend(' r = \theta','r = 5cos(\theta)+ 5',-1); % End of program. Baøi 13 : Veõ khoâng gian 3 D % ve khong gian 3 D [x,y]=meshgrid(-2:0.1:2); z = sqrt(x.^2+y.^2); subplot(2,2,1); surf(x,y,z,'Edgecolor','r'),title('hamsurf'); % ham ve do thi ba chieu z theo x va y . subplot(2,2,2); surfc(x,y,z,'Edgecolor','y'),title('hamsurfc'); % ham ve do thi ba chieu z theo x va y co hinh chieu tren mat phang x –y . subplot(2,2,3); mesh(x,y,z,'Edgecolor','m'),title('hammesh'); % ham ve do thi ba chieu z theo x va y nhung khong co to mau nen. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 9 subplot(2,2,4); plot3(x,y,z,'linewidth',2.5,'linestyle','.','color','r'),title('hamplot3'); % ham ve do thi ba chieu z theo x va y co theo thay doi duoc cac thuoc tinh. % End of program. Baøi 14 : Veõ ñoà thò sin vaø cos treân cuøng toïa ñoä %begin x=0:pi/100:5*pi; y1=sin(x); y2=cos(x); hold on p=plot(x,y1,'b',x,y2,'r','linestyle','.','erasemode','none','markersize',10),grid; xlabel('X'),ylabel('Y') legend('sin(x)','cos(x)',-1) title('graph sin(x) and cos(x)') axis([0 16.5 -1.2 1.2]) %drawnow %pause(0,0.1) % end of program .. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 10 Baøi 15 : Veõ ñoà thò chaïy haøm cos(x) baùm ñoäng : % ve do thi cua ham cos(x): clear x = 0; y = cos(x); h = 0.01; p = plot(x,y,'m','linestyle','.','EraseMode','none','MarkerSize',5); axis([0 16 -1.2 1.2]),grid hold on for x = 0:pi/100:5*pi y = cos(x); set(p,'Xdata',x,'Ydata',y) xlabel('x'),ylabel('Y') title('ve cos(x) bam dong') drawnow pause(0.01) end % End of program. Baøi 16 : Veõ ñöôøng troøn elip % ve duong tron nhap gia tri tu ban phim a = input('nhap a:'); b = input('nhap b:'); r = input('nhap ban kinh r:'); r1 = input('nhap truc nho r1:'); r2 = input('nhap truc lon r2:'); t = 0:pi/100:2*pi; x1 = a+r*cos(t); y1 = b+r*sin(t); x2 = a + r1*cos(t); y2 = b + r2*sin(t); set(gcf,'defaulttextcolor','r'); h = plot(x1,y1,'r',x2,y2,'b'); set(h,'linewidth',2.25); SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 11 axis('square'); xlabel('X'); h = get(gca,'xlabel'); set(gca,'fontsize',10); set(gca,'xtick',-4:10); ylabel('Y'); h = get(gca,'ylabel'); set(gca,'fontsize',16); set(gca,'xtick',-12:2:12); title('graphs of(x-a)^2 + (y-b)^2 = r^2 and (x-a)^2/(r1)^2 + (y-b)^2/(r2)^2 = 1'); h = get(gca,'title'); set(h,'fontsize',12); grid % End of pro gram Baøi 17 : Veõ sin vaø cos coù giôù haïn % ve sin cos h=figure('menubar','none','numbertitle','off','name','LuanVanTotNghiep','position' ,[100 100 600 600],'color','c') axes('parent',h,'position',[0.1 0.1 0.8 0.8]) x=0:pi/100:2*pi plot(x,sin(x),'b',x,cos(x),'r'),grid uicontrol('parent',h,'Style','pushbutton','string','START','position',[5 5 50 50],'callback','move4') xlabel('X') ylabel('Y') h0=uimenu('parent',h,'label','FILE') uimenu('parent',h0,'label','RUN','callback','move4') uimenu('parent',h0,'label','CLOSE','callback','CLOSE') h1=uimenu('parent',h,'label','EDIT') uimenu('parent',h1,'label','CLEAR','callback','CLC') uimenu('parent',h1,'label','CLOSE','callback','CLOSE') % end of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 12 Baøi 18 : Veõ ñoà thò daïng soùng theo töøng phaàn % begining of program: k = 0; for n = 1:3:10 n10 = n*10; x = linspace(-2,2,n10); y = x./(1 + x.^2); k = k + 1; subplot(2,2,k) plot(x,y,'g','LineWidth',2.0,'LineStyle','.') xlabel('X'),ylabel('Y') title('y = x/(1+x^2)') axis([-2 2 -0.8 0.8]) grid pause(3); end % End of program. Bai 19 : Chöông trình caáu truùc baûng ñieåm : %chuong trinh cau truc bang diem clear con = 'y'; i = 1; while con == 'y' n = i; lop(i).STT = input('enter STT :','s'); lop(i).name = input('enter name :','s'); lop(i).diem = input('enter diem :'); if lop(i).diem > 8 lop(i).hang ='Gioi'; elseif lop(i).diem <=8 && lop(i).diem >7 lop(i).hang = 'Kha'; elseif lop(i).diem <=7 && lop(i).diem >5 lop(i).hang = 'Trung Binh'; else lop(i).hang = 'Yeu'; end SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 13 i = i + 1; con = input('continue thanh vien khac y/n :','s'); end for i = 1:n; lop(i) end % end of program Ví Duï Nhö Sau : enter STT :1 enter name :Hung enter diem :9 continue thanh vien khac y/n :y enter STT :2 enter name :Binh enter diem :8 continue thanh vien khac y/n :y enter STT :3 enter name :Dat enter diem :8 continue thanh vien khac y/n :n ans = STT: '1' name: 'Hung' diem: 9 hang: 'Gioi' ans = STT: '2' name: 'Binh' diem: 8 hang: 'Kha' ans = STT: '3' name: 'Dat' diem: 8 hang: 'Kha' SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 14 Baøi 20 : veõ ñoà thò sin(x) va cos(x) treân cuøng 1 heä truïc toïa ñoä %Begining of program x = -2*pi:pi/100:5*pi; y1 = sin(x); y2 = cos(x); hold on plot(x,y1,'linewidth',1.0,'linestyle','.','color','r') plot(x,y2,'linewidth',1.0,'linestyle','.','color','b') grid xlabel('x') ylabel('y') title('y1 = sin(x) and y2=cos(x)') legend ('sin(x)','cos(x)',-1) axis([ -5 5 -1 1])% cho phep tao gio han cua he truc xoy axis on % cho phep bo he truc toa do xoy. % lenh grid : tao mang luoi , lenh xlabel(x) : gian nhan truc x, lenh % title( y = sin(x)): gang nhan cho do thi. % lenh hold on : dung de giu 2 do thi tren cung 1 he toa do. % End or program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 15 Baøi 21 : Veõ sin(x) vaø cos(x) treân 2 heä toïa ñoä xy nhöng cuøng trong 1 khung %Begining of program x = -2*pi:pi/100:2*pi; y1 = sin(x); y2 = cos(x); subplot(2,1,1) % leänh cho pheùt taïo ra nhöõng khung chöùa plot(x,y1,'linewidth',1.0,'linestyle','o','color','m') grid xlabel('x') ylabel('y') title('y1 = sin(x)') legend ('sin(x)',-1) % leänh cho pheùp hieän thò teân vaø maøu cuûa haøm veõ. subplot(2,1,2) % leänh cho pheùt taïo ra nhöõng khung chöùa plot(x,y2,'linewidth',1.0,'linestyle','.','color','r') grid xlabel('x') ylabel('y') title('y2 = cos(x)') legend ('cos(x)',-1) % leänh cho pheùp hieän thò teân vaø maøu cuûa haøm veõ. % End of program % lenh grid : tao mang luoi , lenh xlabel(x) : gian nhan truc x, lenh % title( y = sin(x)): gang nhan cho do thi. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 16 Baøi 22 : Veõ sin(x) , cos(x), sinc(x) vaø 1 - sin(x) treân 4 heä toïa ñoä xy nhöng cuøng trong 1 khung : %Begining of program x = -2*pi:pi/100:2*pi; y1 = sin(x); y2 = cos(x); y3 = sinc(x); y4 = 1 - sin(x); subplot(2,2,1) plot(x,y1,'linewidth',1.0,'linestyle','.','color','m') grid xlabel('x') ylabel('y') title('y1 = sin(x)') legend ('sin(x)',-1) subplot(2,2,2) plot(x,y2,'linewidth',1.0,'linestyle','.','color','b') grid xlabel('x') ylabel('y') title('y2 = cos(x)') legend ('cos(x)',-1) subplot(2,2,3) plot(x,y3,'linewidth',1.0,'linestyle','.','color','r') grid xlabel('x') ylabel('y') title('y3 = sinc(x)') legend ('sinc(x)',-1) subplot(2,2,4) plot(x,y4,'linewidth',1.0,'linestyle','.','color','g') grid SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 17 xlabel('x') ylabel('y') title('y4 = 1 - sin(x)') legend ('1-sin(x)',-1) % End of program Baøi 23: Veõ sin(x) , cos(x) treân 2 heä toïa ñoä xoy nhöng cuøng trong 1 khung, 1 sin(x) vaø 1 - cos(x) treân 2 heä toïa ñoä xoy nhöng cuøng trong 1 khung %Begining of program x = -2*pi:pi/100:2*pi; y1 = sin(x); y2 = cos(x); y3 = 1 - sin(x); y4 = 1 - cos(x); figure subplot(2,2,1) plot(x,y1,'linewidth',1.0,'linestyle','.','color','m') grid xlabel('x') ylabel('y') title('y1 = sin(x)') subplot(2,2,2) plot(x,y2,'linewidth',1.0,'linestyle','.','color','b') grid xlabel('x') ylabel('y') SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 18 title('y2 = cos(x)') figure subplot(2,2,3) plot(x,y3,'linewidth',1.0,'linestyle','.','color','r') grid xlabel('x') ylabel('y') title('y3 = 1 - sin(x)') subplot(2,2,4) plot(x,y4,'linewidth',1.0,'linestyle','.','color','g') grid xlabel('x') ylabel('y') title('y4 = 1 - cos(x)') % End of program Baøi 24 : duøng leänh while ñeå tính toång chuoãi : s = x^n/n! Caùch 1: %dung lenh while and for tinh tong s = x^n/n! n = input('Enter n :'); x = input('Enter x :'); i = 1; s = 0; while i <= n; % ( kieåm tra I coù < = n hay ko? Neáu <= thì baét ñaàu thöïc hieän voøng laëp môùi). fact = 1; for k = 1:i; fact = fact*k; end s = s + (x^i)/fact; i = i + 1; end disp(s) % end of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 19 Caùch 2: chæ duøng leänh while ñeå tính : %dung lenh while and for tinh tong s = x^n/n! n = input('Enter n :'); x = input('Enter x :'); i = 1; k =1; s = 0; fact = 1; while k <= n; fact = fact*k; s = s + (x^i)/fact; k = k + 1; i = i + 1; end disp(s) % end of program Baøi 25 : caùch duøng leänh if elseif else : % cach dung lech if elseif else con = 'y' while con == 'y' n = input('Enter any number:'); if n > 0 disp('positive') ; elseif n < 0 disp('Negative') ; else disp('Zero') ; end con =input('continue y/n:','s'); end % End of progam SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 20 Baøi 26 : Veõ ñoà thò hình ellips : %Begining of program _ve do thi hing ellips: a = input('Enter a :'); % nhap a = 5 b = input('Enter b :'); % nhap b = 4 c = input('Enter c :'); % nhap c = 4 d =input('Enter d :'); % nhap d = 8 t = 0:pi/100:2*pi; x = a + c*cos(t); y = b + d*sin(t); set(gcf,'DefaultTextColor','g'); % maëc ñònh vaên baûn hieån thò treân ñoà thò laø maøu xanh laù caây. . plot(x,y,'b'),xlabel('X'),ylabel('Y'),grid; title('Do Thi Hinh Ellips'); % taïo teân cho ñoà thò %End of program. Baøi 27: : Veõ ñoà thò hình ellips coù theå thay ñoåi neùt veõ %Begining of program _ve do thi hinh ellips: a = input('Enter a :'); % nhap a = 5 b = input('Enter b :'); % nhap b = 4 c = input('Enter c :'); % nhap c = 4 d =input('Enter d :'); % nhap d = 8 t = 0:pi/100:2*pi; x = a + c*cos(t); y = b + d*sin(t); set(gcf,' DefaultTextColor ' ,'b' ); h = plot( x,y,'b' ),xlabel('X'),ylabel('Y'),grid; set(h,' linewidth ',3);% thay doi do rong cua net ve . h = get( gca,'xlabel' );% chon doi tuong la nhan cua truc x . set(h,' FontSize ' ,18);% tang co chu cua nhan truc x. h = get(gca,'ylabel'); set( h,' FontSize ' ,18 ); title( ' Do Thi Hinh Ellips ' ); %End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 21 Baøi 28: caùc leänh vieát chöông trình giao dieän nuùt ñieàu khieån: %chuong trinh chay cos va sin theo nut dieu khien h=figure('position',[100 100 850 550],'menubar','none','numbertitle','off','name','NUT DIEU KHIEN') h0=uimenu('parent',h,'label','FILE') % lenh : uimenu : tao he thong thuc don trong cua so gio dien. %lenh: ‘lable’,’FILE’ : cho phep tao ten nhan la FILE tren thanh menubar. uimenu('parent',h0,'label','RUN','callback','chaySIN') % tao con cua FILE co ten danh nhan la RUN uimenu('parent',h0,'label','CLOSE','callback','close') % tao con cua FILE co ten danh nhan la CLOSE uicontrol('parent',h,'style','pushbutton','position',[120 20 100 30],'string','chaySIN',.... 'backgroundcolor','g','foregroundcolor','r','visible','on','callback','chaySIN') % Tao nut dieu khien chay chuong trinh la do thi hinh SIN duoc luu trong m-file. % lenh:'parent',h, : la thuoc tinh cha do la cua so figure. % lenh: 'style','pushbutton' : thuoc tinh tao nut dieu khien push. % lenh: 'position' : la thuoc tinh vi tri dinh vi cua nut dieu khien. % lenh: 'BackgroundColor' : la thuoc tinh tao mau nen cho cac nut dieu khien. % lenh: 'ForegroundColor' : la thuoc tinh tao mau van ban cho cac nua dk. % lenh : 'callback': la thuoc tinh goi cac chuong trinh ung dung voi gia % tri la ten cua chuong trinh duoc luu duoi dang m-file. % lenh: 'Visibel': la thuoc tinh hien thi voi 2 gia tri 'on' of 'off' cac % nut dieu khien khi chon lenh nay. h1=uimenu('parent',h,'label','EDIT') %lenh cho phep tao ten nhan la EDIT tren thanh menubar. uimenu('parent',h1,'label','CLEAR','callback','clc') % tao con cua EDIT co ten danh nhan la 'clc'khi nhan no se lam sach cua so Window uimenu('parent',h1,'label','CLOSE','callback','close') % tao con cua EDIT co ten danh nhan la 'close' uicontrol('parent',h,'style','pushbutton','position',[630 20 100 30],'string','chayCOS',..... SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 22 'backgroundcolor','y','foregroundcolor','r','callback','chayCos') % Tao nut dieu khien chay chuong trinh la do thi hinh COSIN duoc luu trong % m-file. axes('parent',h,'position',[0.1 0.2 0.35 0.7]) %cho phep tao he truc xy cua do thi sin(x) o vi tri [0.1 0.2 0.35 0.7] axes('parent',h,'position',[0.55 0.2 0.35 0.7]) %cho phep tao he truc xy cua do thi cos(x) o vi tri [0.55 0.2 0.35 0.7] % End of program. Baøi 29: caùc leänh cuûa cöûa soå giao dieän : %Beginning of program : giao dien h = figure('Position',[200 200 450 350],'MenuBar','none',... 'NumberTitle','off','color','y'); % lenh : 'color' ,'y' : toa thuoc tinh mau nen cua cua so giao dien %la mau vang axes('Parent',h,'Position',[0.1 0.2 0.8 0.6]); h0 = uimenu('Parent',h,'Label','File'); uimenu('Parent',h0,'Label','Run','Callback','chaySIN'); uimenu('Parent',h0,'Label','Close','Callback','close'); h1 = uimenu('Parent',h,'Label','Edit'); uimenu('Parent',h1,'Label','Clear','Callback','clc'); uimenu('Parent',h1,'Label','Close','Callback','close'); %End of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 23 Baøi 30: Taïo giao dieän ngöôøi söû duïng veõ ñoà thò coù theå thay ñoåi neùt veõ : Tao doi tuong do thi hinh sin nguoi su dung co the thay doi net ve bang cach click chuot phai tren net ve : % beginning of program clear h = figure('Position',[100 100 450 350],'MenuBar','none',... 'NumberTitle','off'); axes('Parent',h,'Position',[0.1 0.2 0.8 0.6]); Cmenu = uicontextmenu; x = 0:pi/100:2*pi; hline = plot(x,sin(x),'LineWidth',2.6,'UIContextMenu',Cmenu); grid cb1 = ['set(hline,''LineStyle'',''--'')']; cb2 = ['set(hline,''LineStyle'','':'')']; cb3 = ['set(hline,''LineStyle'',''-'')']; item1 = uimenu(Cmenu,'Label','dashed','Callback',cb1); item2 = uimenu(Cmenu,'Label','dotted','Callback',cb2); item3 = uimenu(Cmenu,'Label','solid','Callback',cb3); % End of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 24 Baøi 31: chöông trình veõ ñoà thò baùm ñoäng theo ñieåm cuûa ellips : %Beginning of program : ve do thi hinh elips bam dong. t = 0; x = 3 + 6*cos(t); y = -2 + 9*sin(t); h = 0.01 p = plot(x,y,'r','linestyle','o','erasemode','none','markersize',5),grid axis([-4 10 -12 8]) hold on for t = 0:pi/100:5*pi; x = 3 + 6*cos(t); y = -2 + 9*sin(t); set(p,'xdata',x,'ydata',y) drawnow pause(0.005) % toác ñoä chaám ñoäng laø 0,005 giaây. xlabel('X'),ylabel('Y') title('Graphs of (x-3)^2/36 + (y+2)^2/81 = 1') end %End of program Baøi 32 chöông trình toïa giao dieän ngöôøi söû duïng vôùi nuùt ñieàu khieån chaïy chöông trình veõ ñoà thò caâu 31 %Beginning of program : giao dien h = figure('Position',[200 200 500 500],'MenuBar','none',... 'NumberTitle','off','color','y'); % lenh : 'color' ,'y' : toa thuoc tinh mau nen cua cua so giao dien %la mau vang axes('Parent',h,'Position',[0.1 0.2 0.8 0.6]); uicontrol('parent',h,'style','pushbutton','position',[120 20 100 30],'string','Chay Elips',.... 'backgroundcolor','g','foregroundcolor','r','visible','on','callback','elips7') h0 = uimenu('Parent',h,'Label','File'); SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 25 uimenu('Parent',h0,'Label','Run','Callback','elips7'); uimenu('Parent',h0,'Label','Close','Callback','close'); h1 = uimenu('Parent',h,'Label','Edit'); uimenu('Parent',h1,'Label','Clear','Callback','clc'); uimenu('Parent',h1,'Label','Close','Callback','close'); % End of program. Baøi 33: chöông trình toïa giao dieän ngöôøi söû duïng vôùi nuùt ñieàu khieån chaïy chöông trình veõ ñoà thò sin(x) vaø cos(x) : % chuong trinh tao nut dieu khien chay sin(x) va cos(x): h=figure('position',[100 100 450 450],'menubar','none','numbertitle','off','name','chaysin(x)-cos(x)'); h0=uimenu('parent',h,'label','File'); uimenu('parent',h0,'label','runsin(x)','callback','chaysine'); uimenu('Parent',h0,'Label','Close','Callback','close'); uicontrol('parent',h,'style','pushbutton','string','chaysin(x)','backgroundcolor','r',... 'foregroundcolor','k','position',[80 170 110 30],'callback','chaysine'); axes('parent',h,'position',[0.1 0.5 0.4 0.4]); h1 = uimenu('parent',h,'label','Edit'); uimenu('parent',h1,'label','runcos(x)','callback','chaycos'); uimenu('Parent',h1,'Label','Close','Callback','close'); uimenu('parent',h1,'label','claer','callback','clc'); uicontrol('parent',h,'style','pushbutton','string','chaycos(x)','backgroundcolor','m',... 'foregroundcolor','k','position',[280 170 110 30],'callback','chaycos'); axes('parent',h,'position',[0.55 0.5 0.4 0.4]); % End of program . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 26 Baøi 34: caùc leänh cuûa cöûa soå giao dieän : % cac lenh tao cua so giao dien : % beginning of program h = figure('position',[100 100 250 250],'menubar','none','numbertitle','off',... 'name','luan van tot nghiep','color','r') % lenh: 'position',[100 100 250 250]: dinh vi tri cua cua so giao dien tren man hinh may tinh. % lenh:'menubar','none': tao thuoc tinh tat thanh thuc don menubar. % lenh: 'numbertitle','off': tao thuoc tinh tat ten nhan number figure tren thanh menubar. % lenh: 'h = figure': gan cua so giao dien figure cho bien h. axes('parent',h,'box','off','linewidth',1.5,'TickDir','out','tickLength',[0.02 0.02],... 'Xgrid','on','Ygrid','on','visible','off','position',[0.1 0.4 0.5 0.4]) % lenh: axes: tao cua so he truc toa do xy trong cua so cha figure. % lenh: 'Box' :mac dinh la mo khung cua he truc xy. Tat la ‘ off ’. % lenh: 'linewidth',1.5 : tao do rong cua khung he truc xy. % lenh: 'TickDir','out': toa thuoc tinh cac duong ganh so he truc xy nam phia ngoai. % lenh: 'tickLength',[0.02 0.02]:tao thuoc tinh do dai net gach he truc toa do xy trong khung cua figure. % lenh: 'Xgrid','on','Ygrid','on': tao thuoc tinh duong ke luoi he truc xy. % lenh: 'Visible','off' : la thuoc tinh lam tat cua so he truc toa do xy . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 27 % lenh: 'posotion',[0.1 0.4 0.5 0.4]: da vi tri he truc xy trong khung giao dien figure. % End of program. Baøi 35 : veõ hình troøn vaø hình elips treân cuøng 1 heä truïc toïa ñoä : %begining a1 = input('nhap a1 : ') ;% nhap a1 = 5. b1 = input('nhap b1 : ') ;% nhap b1 = 4. r = input('nhap r : ') ;% nhap r = 4. a2 = input('nhap a2 : ') ;% nhap a2 = 3. b2 = input('nhap b2 : ') ;% nhap b2 = -2. r1 = input('nhap r1 : ') ;% nhap r1 = 7. r2 = input('nhap r2 : ') ;% nhap r2 = 2. t = 0:pi/100:2*pi ; x1 = a1 + r*cos(t); y1 = b1 + r*sin(t); x2 = a2 + r1*cos(t); y2 = b2 + r2*sin(t); set(gcf,'defaulttextcolor','b') % mac dimh van ban la mau xanh dam. h = plot(x1,y1,'r',x2,y2,'b'),grid ; set(h,'linewidth',3) SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 28 axis('square') xlabel('X') h1 = get(gca,'xlabel'); set(h1,'fontsize',10) set(gca,'xtick',-8:10) ylabel('Y') h2 = get(gca,'ylabel'); set(h2,'fontsize',10) set(gca,'ytick',-8:10) title('ELIP & DUONG TRON') h3 = get(gca,'title'); set(h3,'fontsize',15) %end of program. Baøi 36 : % beginning of program k = 0; for n = 1:3:10 n10 = n*10; x = linspace(-2,2,n10); y = x./(1 + x.^2); k = k + 1; subplot(2,2,k) plot(x,y,'r','LineWidth',2.0,'LineStyle','.') xlabel('X'),ylabel('Y') title('y = x/(1+x^2)') axis([-2 2 -0.8 0.8]),grid pause(3); end %End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 29 Baøi 37 : Veõ 2 hình Elips treân cuøng 1 heä truïc toïa ñoä : %Beginning of program t = 0:pi/100:2*pi; x1 = 3 + 6*cos(t); y1 = -2 + 9*sin(t); x2 = 7 + 2*cos(t); y2 = 8 + 6*sin(t); set(gcf,'DefaultTextColor','red') % tao mau mac dinh h1 = plot(x1,y1, 'r',x2,y2,'b'); set(h1,'LineWidth',2.25); axis('square'); xlabel('X') h = get(gca,'xlabel'); set(h,'FontSize',16); set(gca,'XTick',-4:10); % tao 15 diem tren truc hoanh x ylabel('Y') h = get(gca,'ylabel'); set(h,'FontSize',16) set(gca,'YTICK',-12:2:12); % taqo 14 diem tren truc y title('Graphs of (x-3)^2/36 + (y+2)^2/81 = 1 and (x-7)^2/4+(y-8)^2/36 = 1') h = get(gca,'title'); set(h,'FontSize',12); grid %End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 30 Baøi 38: chöông trình toïa giao dieän ngöôøi söû duïng vôùi nuùt ñieàu khieån chaïy chöông trình veõ ñoà thò caâu 33. %chuong trinh chay cos va sin theo nut dieu khien h=figure('position',[100 100 400 450],'menubar','none',... 'numbertitle','off','name','NUT DIEU KHIEN','color','y') h0=uimenu('parent',h,'label','FILE') %lenh cho phep tao ten nhan la FILE tren thanh menubar. uimenu('parent',h0,'label','RUN','callback','elips7') % tao con cua FILE co ten danh nhan la RUN uimenu('parent',h0,'label','CLOSE','callback','close') % tao con cua FILE co ten danh nhan la CLOSE uicontrol('parent',h,'style','pushbutton','position',[120 20 100 30],'string','Chay Elips',.... 'backgroundcolor','g','foregroundcolor','r','visible','on','callback','elips7') % Tao nut dieu khien chay chuong trinh la do thi hinh SIN duoc luu trong m-file. % lenh:'parent',h, : la thuoc tinh cha do la cua so figure. % lenh: 'style','pushbutton' : thuoc tinh tao nut dieu khien push. % lenh: 'position' : la thuoc tinh vi tri dinh vi cua nut dieu khien. % lenh: 'BackgroundColor' : la thuoc tinh tao mau nen cho cac nut dieu khien. % lenh: 'ForegroundColor' : la thuoc tinh tao mau van ban cho cac nua dk. % lenh : 'callback': la thuoc tinh goi cac chuong trinh ung dung voi gia % tri la ten cua chuong trinh duoc luu duoi dang m-file. % lenh: 'Visibel': la thuoc tinh hien thi voi 2 gia tri 'on' of 'off' cac % nut dieu khien khi chon lenh nay. h1=uimenu('parent',h,'label','EDIT') %lenh cho phep tao ten nhan la EDIT tren thanh menubar. uimenu('parent',h1,'label','CLEAR','callback','clc') % tao con cua EDIT co ten danh nhan la 'clc'khi nhan no se lam sach cua so Window uimenu('parent',h1,'label','CLOSE','callback','close') % tao con cua EDIT co ten danh nhan la 'close' SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 31 axes('parent',h,'position',[0.2 0.2 0.7 0.7]) %cho phep tao he truc xy cua do thi sin(x) o vi tri [0.2 0.2 0.7 0.7] % End of program . Baøi 39 : Veõ 3D baùm ñoäng cuûa haøm : x = sin(2t) , y = cos(t) , z = t % Beginning of program clear t = 0; x = sin(2*t); y = cos(t); z=t p = plot3(x,y,z,'.','EraseMode','none','MarkerSize',5); axis([-1 1 -1 1 0 10]),grid hold on for t = 0:0.01:3*pi x = sin(2*t); y = cos(t); z = t; set(p,'XData',x,'YData',y,'Zdata',z) drawnow pause(0.01) end %end of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 32 Baøi 40 : Cho dy/dt = Ay, trong ñoù A(y) = [-8/3 0 –y(2);0 -10 10;-y(2) 28 1]. Nghieäm quó ñaïo chuyeån ñoäng cuûa phöông trình vi phaân naøy coù theå ñöôïc tìm baèng phöông phaùp Euler. Chöông trình sau laø moät ví duï minh chöùng. % beginning of program clear A = [-8/3 0 0;0 -10 10;0 28 -1]; y = [35 -10 -7]'; h = 0.01; p = plot3(y(1),y(2),y(3),'.','EraseMode','none','MarkerSize',5); axis([0 50 -25 25 -25 25]),grid hold on for i = 1:4000 A(1,3) = y(2); A(3,1) = -y(2); ydot = A*y; y = y + h*ydot; set(p,'XData',y(1),'YData',y(2),'ZData',y(3)) pause(0.01) drawnow i = i +1; end % End of program . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 33 Baøi 41: veõ ñoà thò 3 chieàu : % Begining of program : [x,y] = meshgrid(-1:0.05:1); z = x.^2+y.^2; subplot(2,2,1); surf(x,y,z,'Edgecolor','r'),title('hamsurf'); subplot(2,2,2); surfc(x,y,z,'Edgecolor','b'),title('hamsurfc'); subplot(2,2,3); mesh(x,y,z,'Edgecolor','g'),title('hammesh'); subplot(2,2,4); plot3(x,y,z,'linewidth',2.5,'linestyle','.','color','m'),title('hamplot3'); % End of program. Baøi 42 : veõ ñoà thò 3 chieàu baùm ñoäng theo ñieåm : % ve ba chieu bam dong theo diem clear z = 0; x = sin(z); y = cos(z); h = 0.01 p = plot3(x,y,z,'o','EraseMode','none','MarkerSize',5,'color','m'); axis([-1 1 -1 1 0 40]),grid SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 34 hold on for z = 0:pi/100:10*pi x = sin(z); y = cos(z); set(p,'XData',x,'YData',y,'Zdata',z) drawnow pause(0.01) end % end of program Baøi 43 : Veõ ñoà thò sin(x) vaø cos(x) chaïy baùm ñoäng treân cuøng heä truïc x y : % ve do thi chay sin(x) va cos(x) tren cung he truc xy: clear x = 0; y1 = sin(x); y2 = cos(x); hold on p1 = plot(x,y1,'.','EraseMode','none','MarkerSize',5,'color','m'); p2 = plot(x,y2,'.','EraseMode','none','MarkerSize',5','color','g'); axis([0 16.5 -1.2 1.2]),grid hold on for x = 0:pi/100:5*pi; y1 = sin(x); y2 = cos(x); set(p1,'XData',x,'YData',y1) set(p2,'XData',x,'YData',y2) xlabel('X'),ylabel('Y') title('ve do thi sin(x) va cos(x)chay theo diem tren cung he truc xy') drawnow pause(0.01) end %end of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 35 CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 36 Baøi 44: Veõ daïng soùng hình sin cuûa ñieän 3 pha : % ve do thi chay sin(x) va cos(x) tren cung he truc xy: clear x = 0; y1 = sin(x); y2 = sin(x-2*pi/3); y3 = sin(x+2*pi/3); hold on p1 = plot(x,y1,'.','EraseMode','none','MarkerSize',5,'color','m'); p2 = plot(x,y2,'.','EraseMode','none','MarkerSize',5','color','g'); p3 = plot(x,y3,'.','EraseMode','none','MarkerSize',5','color','r'); axis([0 16.5 -1.2 1.2]),grid hold on for x = 0:pi/100:5*pi; y1 = sin(x); y2 = sin(x-2*pi/3); y3 = sin(x+2*pi/3); set(p1,'XData',x,'YData',y1) set(p2,'XData',x,'YData',y2) set(p3,'XData',x,'YData',y3) xlabel('X'),ylabel('Y') title('ve dang song hinh sin dien 3pha') drawnow pause(0.01) end %end of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 37 Baøi 45: Veõ ñoà thò ñöôøng troøn vaø elips cuøng treân 1 heä truc xy vaø baùm ñoäng theo ñieåm ,coù phöông trình sau: (x-1)^2/36 + (y+1)^2/25 = 1 and (x-6)^2 + (y+3)^2 = 16 . %Beginning of program : ve do thi hinh elips bam dong. clear t = 0; x1 = 6 + 4*cos(t); y1 = -3 + 4*sin(t); x2 = 1 + 6*cos(t); y2 = -1 + 5*sin(t); h = 0.01 ; hold on p1 = plot(x1,y1,'r','linestyle','.','erasemode','none','markersize',5) p2 = plot(x2,y2,'b','linestyle','o','erasemode','none','markersize',5) axis([-8 12 -12 8]),grid hold on for t = 0:pi/100:5*pi; x1 = 6 + 4*cos(t); y1 = -3 + 4*sin(t); x2 = 1 + 6*cos(t); y2 = -1 + 5*sin(t); set(p1,'Xdata',x1,'Ydata',y1) set(p2,'Xdata',x2,'Ydata',y2) drawnow pause(0.005) xlabel('X'),ylabel('Y') title('Ve (x-1)^2/36 + (y+1)^2/25 = 1 and (x-6)^2 + (y+3)^2 = 16') end %End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 38 Baøi 46: chöông trình toïa giao dieän ngöôøi söû duïng vôùi nuùt ñieàu khieån chaïy chöông trình veõ ñoà thò Elips – Ñ troøn caâu 47: %chuong trinh chay elips dtron theo nut dieu khien h = figure('position',[100 100 400 450],'menubar','none',... 'numbertitle','off','name','NUT DIEU KHIEN','color','y') h0 = uimenu('parent',h,'label','FILE') %lenh cho phep tao ten nhan la FILE tren thanh menubar. uimenu('parent',h0,'label','RUN','callback','elipsdtron2') % tao con cua FILE co ten danh nhan la RUN uimenu('parent',h0,'label','CLOSE','callback','close') % tao con cua FILE co ten danh nhan la CLOSE uicontrol('parent',h,'style','pushbutton','position',[120 20 100 30],'string','Chay Elips-Dtron',.... 'backgroundcolor','g','foregroundcolor','r','visible','on','callback','elipsdtron2') % Tao nut dieu khien chay chuong trinh la do thi hinh Elipsdtron duoc luu trong m-file. % lenh:'parent',h, : la thuoc tinh cha do la cua so figure. % lenh: 'style','pushbutton' : thuoc tinh tao nut dieu khien push. % lenh: 'position' : la thuoc tinh vi tri dinh vi cua nut dieu khien. % lenh: 'BackgroundColor' : la thuoc tinh tao mau nen cho cac nut dieu khien. % lenh: 'ForegroundColor' : la thuoc tinh tao mau van ban cho cac nua dk. % lenh : 'callback': la thuoc tinh goi cac chuong trinh ung dung voi gia % tri la ten cua chuong trinh duoc luu duoi dang m-file. % lenh: 'Visibel': la thuoc tinh hien thi voi 2 gia tri 'on' of 'off' cac % nut dieu khien khi chon lenh nay. h1 = uimenu('parent',h,'label','EDIT') %lenh cho phep tao ten nhan la EDIT tren thanh menubar. uimenu('parent',h1,'label','CLEAR','callback','clc') % tao con cua EDIT co ten danh nhan la 'clc'khi nhan no se lam sach cua so Window uimenu('parent',h1,'label','CLOSE','callback','close') % tao con cua EDIT co ten danh nhan la 'close' axes('parent',h,'position',[0.2 0.2 0.7 0.7]) %cho phep tao he truc xy cua do thi sin(x) o vi tri [0.1 0.2 0.35 0.7] % En of program. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 39 Baøi 47 : chuong trinh tinh tong day so : s = x/1 - x^2/2! - x^3/3! + x^4/4!... % chuong trinh tinh tong day so : s = x/1 - x^2/2! - x^3/3! + x^4/4!... clear n = input('Enter n :'); x = input('Enter x :'); % cac gia tri cua x luon giong nhau. i = 1; count = 1; sum = 0 ; while i <= n fact = 1; for k = 1:i fact = fact*k; end if count == 1 sum = sum + x^i/fact; else sum = sum - x^i/fact; end count = count + 1; if count == 4 count = 1; end i = i + 1; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 40 end sum %End of program . Ví duï nhaäp giaù trò x(i) nhö sau: Enter n :4 Enter x :2 sum = -0.6667 Baøi 48 : caáu truùc thieát bò : tính toäng caùc coät : Sl , p , Umin , Imin, Cosphi, Ksd: % chong trinh tao mang cau truc i = 1; sum(1) = 0; sum(2) = 0; sum(3) = 0; sum(4) = 0; sum(5) = 0; sum(6) = 0; while i <= 3 Tb(i).ten = input('Nhap ten thiet bi :','s'); Tb(i).kyhieu = input('Nhap ky hieu thiet bi :','s'); Tb(i).Sl = input('Nhap so luong :'); Tb(i).p = input('Nhap cong suat :'); Tb(i).Umin = input('Nhap dien ap min :'); Tb(i).Imin = input('Nhap dong dien min :'); Tb(i).Cosphi = input('Nhap he so cosphi:'); Tb(i).Ksd = input('Nhap Ksd :'); sum(1) = sum(1) + Tb(i).Sl; sum(2) = sum(2) + Tb(i).p; sum(3) = sum(3) + Tb(i).Umin; sum(4) = sum(4) + Tb(i).Imin; sum(5) = sum(5) + Tb(i).Cosphi; sum(6) = sum(6) + Tb(i).Ksd; i = i + 1; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 41 end sum(1) sum(2) sum(3) sum(4) sum(5) sum(6) % End of program . Baøi 49: tính toång S = toång [ x(i) * i! ] : Tröôøng hôïp giaù trò x(i) khaùc nhau: % tinh s = tong[x(i)*i!] n = input('Enter nhap n :'); i = 1; s = 0; fact = 1; k = 1; while i <= n x(i) = input('Nhap gia tri x(i) :'); fact = fact*k; s = s + x(i)*fact; i = i +1; k = k + 1; end s % End of program. Ví duï nhaäp giaù trò x(i) nhö sau: Enter nhap n :4 Nhap gia tri x(i) :2 Nhap gia tri x(i) :3 Nhap gia tri x(i) :4 Nhap gia tri x(i) :5 s= SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 42 152 Tröôøng hôïp giaù trò x(i) giong nhau : % tinh tong[x*i!] n = input('Enter nhap n :'); x = input('Nhap gia tri x :'); i = 1; s = 0; k = 1; while i <= n fact = 1; for k = 1:i fact = fact*k; end s = s + x*fact; i = i +1; end s % End of program. Ví Duï Nhö Sau : Enter nhap n :4 Nhap gia tri x :2 s= 66 Baøi 50 : Xaùc ñònh taâm cuûa phuï taûi : X = toång [ x(i) * p(i) ] / toång [p(i)] vaø Y = toång [ y(i) * p(i) ] / toång [p(i)] % xac dinh tam cua phu tai cung cap dien : i = 1; x1 = 0; y1 = 0; p1 = 0; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 43 n = input('Nhap n :'); while i <= n x(i)= input('Nhap gia tri x(i) :'); y(i)= input('Nhap gia tri y(i) :'); p(i)= input('Nhap cong suat p(i) :'); x1 = x1 + x(i)*p(i); y1 = y1 + y(i)*p(i); p1 = p1 + p(i); i = i + 1; end x = x1/p1 y = y1/p1 % End of program . Ví duï nhö sau : Nhap n :4 Nhap gia tri x(i) :1 Nhap gia tri y(i) :2 Nhap cong suat p(i) :20 Nhap gia tri x(i) :2 Nhap gia tri y(i) :3 Nhap cong suat p(i) :30 Nhap gia tri x(i) :3 Nhap gia tri y(i) :4 Nhap cong suat p(i) :20 Nhap gia tri x(i) :4 Nhap gia tri y(i) :1 Nhap cong suat p(i) :20 x= 2.4444 y= 2.5556 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 44 Baøi 52 : chöông trình veõ ñöôøng troøn baùm ñoäng theo ñieåm : %Beginning of program : ve do thi hinh tron bam dong. a = input('nhap a :'); b = input('nhap b :'); r = input('nhap r :'); t = 0; x = a + r*cos(t); y = b + r*sin(t); h = 0.01; p = plot(x,y,'r','linestyle','o','erasemode','none','markersize',5),grid axis([-4 10 -12 8]); hold on for t = 0:pi/100:5*pi; x = a + r*cos(t); y = b + r*sin(t); set(p,'Xdata',x,'Ydata',y) drawnow pause(0.01) xlabel('X'),ylabel('Y') title('Graphs of (x - a)^2 + (y - b)^2 = r^2') end %End of program Baøi 53 : tính toång S = toång [ x(i) / i! ] : Tröôøng hôïp giaù trò x(i) khaùc nhau: % tinh tong[x(i)/i!] n = input('Enter nhap n :'); i = 1; s = 0; fact = 1; k = 1; while i <= n x(i) = input('Nhap gia tri x(i) :'); fact = fact*k; s = s + x(i)/fact; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 45 i = i +1; k = k + 1; end s % End of program. Ví Duï Nhö : Enter nhap n :3 Nhap gia tri x(i) :2 Nhap gia tri x(i) :3 Nhap gia tri x(i) :4 s= 4.1667 Tröôøng hôïp giaù trò x(i) giong nhau : % tinh tong[x/i!] n = input('Enter nhap n :'); x = input('Nhap gia tri x :');% Gia tri cua x bang nhau i = 1; s = 0; k = 1; while i <= n fact = 1; for k = 1:i fact = fact*k; end s = s + x/fact; i = i +1; end s % End of program. Ví Duï Cuï Theå : Enter nhap n :4 Nhap gia tri x :2 s= 3.4167 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 46 Baøi 54 : chuong trinh tinh tong day so : s = x/1 + x^2/2! - x^3/3! - x^4/4! + x^5/ 5! + x^6/6! – x^7/7! – x^8/8! … % chuong trinh tinh tong day so : s = x/1 + x^2/2! - x^3/3! - x^4/4!... clear n = input('Enter n :'); x = input('Enter x :'); i = 1; count = 1; sum = 0 ; while i <= n fact = 1; for k = 1:i fact = fact*k; end if count == 1 sum = sum + x^i/fact; elseif count == 2 sum = sum + x^i/fact; else sum = sum - x^i/fact; end count = count + 1; if count == 5 count = 1 ; end i = i + 1; end sum % End of program . Ví Duï Nhö : Enter n :8 Enter x :2 sum = 2.3238 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 47 Hoaëc Enter n :4 Enter x :2 sum = 2.0000 Baøi 55 : Chöông trình tính toång daõy soá : S = 2+x^3/3! + x^6/6! + x^9/9! +...+ x^n/n! % Begining of program : s = 2+x^3/3! + x^6/6! + x^9/9! +...+ x^n/n! clear n = input('Enter n :'); x = input('Enter x :'); i = 3; count = 3; sum = 2 ; while i <= n fact = 1; for k = 1:i fact = fact*k; end if count == 3 sum = sum + x^i/fact; else sum = sum ; end count = count + 1; if count == 6 count = 3 ; end i = i + 1; end sum %End of program . Ví Duï Nhö : Enter n :9 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 48 Enter x :2 sum = 3.4236 Baøi 56 : Chöông trình tính toång daõy soá : voùi giaù trò x(i) baát kyø : %dung lenh while and for tinh tong s = x1/1! + x2^2/2! +….+ x^n/n! n = input('Enter n :'); i = 1; s = 0; k =1; fact = 1; while i <= n; x = input('Enter x :'); fact = fact*k; s = s + (x^i)/fact; k = k +1; i = i + 1; end s % end of program Ví Duï Nhö : Enter n :4 Enter x :3 Enter x :2 Enter x :5 Enter x :6 s= 79.8333 Baøi 57 : Chöông trình caáu truùc baûng ñieåm : %chuong trinh cau truc bang diem clear con = 'y'; i = 1; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 49 while con == 'y' n = i; lop(i).STT = input('enter STT :','s'); lop(i).name = input('enter name :','s'); lop(i).diem = input('enter diem :'); if lop(i).diem >= 9 lop(i).hang ='Gioi'; elseif lop(i).diem < 9 && lop(i).diem >= 7 lop(i).hang = 'Kha'; elseif lop(i).diem < 7 && lop(i).diem >= 5 lop(i).hang = 'Trung Binh'; else lop(i).hang = 'Yeu'; end i = i + 1; con = input('continue thanh vien khac y/n :','s'); end for i = 1:n; lop(i) end % End of program Ví Duï Nhö : enter STT :1 enter name :Hung enter diem :9 continue thanh vien khac y/n :y enter STT :2 enter name :Anh enter diem :7 continue thanh vien khac y/n :y enter STT :3 enter name :Sang enter diem :6 continue thanh vien khac y/n :y enter STT :4 enter name :Giang enter diem :4 continue thanh vien khac y/n :n ans = STT: '1' SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 50 name: 'Hung' diem: 9 hang: 'Gioi' ans = STT: '2' name: 'Anh' diem: 7 hang: 'Kha' ans = STT: '3' name: 'Sang' diem: 6 hang: 'Trung Binh' ans = STT: '4' name: 'Giang' diem: 4 hang: 'Yeu' Baøi 58 : Chöông trình tính toång : P = an*x^n + an-1 *x^(n-1) +…..+ a1 *x + a0 % chuong trinh tinh tong :p = an*x^n + a(n-1)*x^(n-1) + ...+ a1*x + a0 clear n = input('Enter n :'); x = input('Enter x :'); i = 0; sum = 0 ; while i <= n k = n; a.n = input('Enter a.n :'); sum = sum + a.n*x^k; n = n -1; end sum %End of program . Ví Duï Nhö : SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 51 Enter n :5 Enter x :2 Enter a.n :5 Enter a.n :3 Enter a.n :4 Enter a.n :2 Enter a.n :1 Enter a.n :6 sum = 256 Baøi 59 : : chuong trinh tinh tong day so : s = x/1 + x^2/2! - x^3/3! + x^4/4! x^5/ 5! + x^6/6! – x^7/7! + x^8/8! … % chuong trinh tinh tong day so : s = x/1 + x^2/2! - x^3/3! + x^4/4! – x^5/5! +… clear n = input('Enter n :'); x = input('Enter x :'); i = 1; count = 1; sum = 0 ; while i <= n fact = 1; for k = 1:i fact = fact*k; end if count == 1 sum = sum + x^i/fact; elseif count == 2 sum = sum + x^i/fact; else sum = sum - x^i/fact; end count = count + 1; if count == 4 count = 2 ; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 52 end i = i + 1; end sum %End of program . Ví Duï Nhö : Enter n :5 Enter x :2 sum = 3.0667 Baøi 60 : Tính toång sau: S = [toång x(i)]^2/[toång x(i)^2] % tinh tong: S = [tong x(i)]^2/[tong x(i)^2] n = input('Enter nhap n :'); i = 1; s1 = 0; s2 = 0; while i <= n x(i) = input('Nhap gia tri x(i) :'); s1 = s1 + x(i); s2 = s2 + x(i)^2; i = i +1; end s = s1^2/s2 % End of program. Ví Duï Nhö sau : Enter nhap n :5 Nhap gia tri x(i) :2 Nhap gia tri x(i) :3 Nhap gia tri x(i) :4 Nhap gia tri x(i) :5 Nhap gia tri x(i) :6 s= 4.4444 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 53 Bai 61: Veõ Ñoà Thò Noäi Suy 2 Chieàu : % begining of program years = 1950:10:1990; service = 10:10:30; wage = [150.697 199.592 187.625;197.323 195.072 250.287;.... 203.212 179.092 322.767;226.505 153.706 426.730;249.633 120.281 598.234]; x = 10:1:30; y = 1950:2:1990; z = interp2(service,years,wage,15,1975); [x,y] = meshgrid(10:1:30,1950:2:1990); z = interp2(service,years,wage,x,y); surf(x,y,z) % End of program Baøi 62 : tính trò cuûa bieåu thöùc : T = toång(i=1:n) ki*x^i /i! ki = 1 neu i khong phai la mot so nguyen to ( 2,4,6,8...) ki = -1 neu i la mot so nguyen to (1,3,5,7,9....) % Beginning of program clear n = input('Enter n :'); x = input('Enter x :'); i = 1; count = 1; sum = 0 ; while i <= n fact = 1; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 54 for k = 1:i fact = fact*k; end if count == 1 sum = sum - x^i/fact; else sum = sum + x^i/fact; end count = count + 1; if count == 3 count = 1 ; end i = i + 1; end sum %End of program . Ví Duï Nhö : Enter n :7 Enter x :2 sum = -0.8698 Baøi 63 : Chöông trình tính toång caùc tích 2 soá lieân tieáp töø 1 ñeán n : s = 1*2 + 2*3 + 3*4 + 4*5 +....+ (n-1)*n % Begining of program n = input('Enter n:'); sum = 0; for i = 1:n sum = sum + (i-1)*i; end sum % End of program Ví Duï Nhö : Enter n:8 sum = 168 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 55 3 Baøi Thi Hoïc Kì Vöøa Roái Baøi 2 : Chöông trình mang cau truc va tinh cosphi trung binh va dong dien : % chong trinh tao mang cau truc thiat bi: n = input('enter n :'); i = 1; sum(1) = 0; sum(2) = 0; while i <= n TB(i).ten = input('Nhap ten thiet bi :','s'); S(i) = input('Nhap so luong :'); P(i) = input('Nhap cong suat :'); U(i) = input('Nhap dien ap :'); C(i)= input('Nhap cosphi :'); sum(1) = sum(1) + P(i)*S(i)*C(i); sum(2) = sum(2) + P(i); I(i) = P(i)/(sqrt(3)*U(i)*C(i)) i = i + 1; end Ctb = sum(1)/sum(2) %End of program Baøi 3 : Chöông trình vẽ đồ thị nội suy cosphi baùm ñoäng theo ñieåm , thieát laäp tæ leä heä truïc toïa ñoä , coù ñaùnh nhaõn vaø tieâu ñeà : % Begining of program U =360:5:400; C = 0.5:0.05:0.9; x=0; y = interp1(U,C,x,'spline'); hold on p = plot(x,y,'o','Erasemode','none','Markersize',5,'color','r') axis([360 400 0.5 1]),grid hold on SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 56 for x = 360:1:400 ; y = interp1(U,C,x,'spline'); set(p,'Xdata',x,'Ydata',y) Xlabel('X'),Ylabel('Y') title('Ve noi suy cosphi') drawnow pause(0.01) end % End of program Baøi 4 : Chöông trình giao dieän coù tieâu ñeà , heä truïc toïa ñoä , thöïc ñôn FILE chöùa leänh chaïy vaø nuùt ñieàu khieån chöông trình veõ ñoà thò o caâu 68: %chuong trinh tao giao dien su dung chay chuong trinh ve do thi noi suy cosphi h = figure('position',[80 100 400 500],'menubar','none',... 'numbertitle','off','name','NUT DIEU KHIEN','color','y') h0 = uimenu('parent',h,'label','FILE') %lenh cho phep tao ten nhan la FILE tren thanh menubar. uimenu('parent',h0,'label','RUN','callback','noisuy') % tao con cua FILE co ten danh nhan la RUN uimenu('parent',h0,'label','CLOSE','callback','close') % tao con cua FILE co ten danh nhan la CLOSE uicontrol('parent',h,'style','pushbutton','position',[120 20 100 30],.... 'string','ve noi suy cosphi','backgroundcolor','g',... 'foregroundcolor','r','callback','noisuy') axes('parent',h,'position',[0.2 0.2 0.7 0.7]) %End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 57 BÀI T P TH C HÀNH S 1 Th c hành l nh, kiểu d li u, toán tử, truy c p, mảng, hàm trên cửa sổ l nh. Làm quen với môi trường cửa sổ làm vi c Matlab. + Command Window (Cửa sổ lệnh ). + Current Directory ( Cửa sổ thư mục hiện hành ). + Command History (Cửa sổ lịch sử ). + Work Space ( Không gian làm việc ) I .Các chức năng trên cửa sổ l nh: Clc: làm sạch màn hình. Clear: làm sạch cửa sổ workspace. Help: l y thông tin trợ giúp. Edit: soạn th o chương trình. Type: xem nội dung của file. Ŋ, Ō : dịch chuyển con trỏ trái ph i. ŋ, ō: chọn lại những lệnh đă thực hiện. II . Gán các kiểu d li u cho biến: Thực hiện các dòng lệnh sau và kiểm tra kết qu . >> a = 5 % gán dữ liệu số nguyên a= 5 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 58 >> b = 7.43 % gán dữ liệu số thực b= 7.4300 >> c = 3+4i % gán dữ liệu số phức c= 3.0000 + 4.0000i >> d = pi d= 3.1416 % gán số pi = 3.14159265 cho biến d >> e = eps % gán số chính xác của d u ch m động 2−52 e= 2.2204e-016 >> f = realmin f= 2.2251e-308 % gán số ch m động dương nhỏ nh t 2−1022 >>g = realmax % gán số ch m động dương lớn nh t 21022 g= 1.7977e+308 >>h = nan h= NaN % khoâng phaûi soá III .định dạng các kiểu d li u s với l nh format : long, long e, short, short e, trong đó e là cơ số 10. Thực hiện 2 dòng lệnh sau: >> format long % số ch m cố định là 15 con số >> A = pi A= 3.14159265358979 Thực hiện tiếp 2 dòng lệnh sau rồi so sánh kết qu . >> format long e % số d u ch m động là 15 con số >> A = pi A= 3.141592653589793e+000 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 59 So saùnh keát quaû khi laàn löôït thöïc hieän caùc doøng leänh treân cho thaáy : keát quaû baèng nhau. Nhöng ñöôïc bieåu dieãn khaùc nhau: vôùi A = 3,14159265358973e+000 trong ñoù e + 000 = 100 = 1 Tương tự thực hiện các dòng lệnh sau. >> format short % số ch m cố định là 5 con số ( mặc định ) >> A = pi A= 3.1416 Và >> format short e % số d u ch m động là 5 con số >> A = pi A= 3.1416e+000 Töông töï so saùnh keát quaû khi laàn löôït thöïc hieän caùc doøng leänh tieáp theo ôû treân cho thaáy : keát quaû baèng nhau. Nhöng ñöôïc bieåu dieãn khaùc nhau: vôùi A = 3,1416e+000 trong ñoù e + 000 = 100 = 1 IV .Qui ước biến và th c hi n các phép toán trên cửa sổ l nh. Cộng +, trừ -, nhân *, chia ph i /, chia trái \, lũy thừa ^. Độ ưu tiên Phép toán Tính ưu tiên 1 (,) trong ra ngoài 2 ^ trái qua ph i 3 ±a 4 *,/,\ trái qua ph i 5 +,- trái qua ph i Tính bằng tay các biểu thức sau đó thực hiện bằng matlab và lưu lại kết qu . a. 2 / 2 * 3 Tính baèng tay: 2/2*3 = (2/2)*3 = 3 Tính baèng matlab : >> 2/2*3 ans = 3 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 60 b. 6 – 2 / 5 + 7 ^ 2 – 1 Tính baèng tay: 6 - 2/5+7^2-1 = 6 - 0,4 + 49 – 1 = 35,6 Tính baèng matlab : >> 6-2/5+7^2-1 ans = 53.6000 c. 10 / 2 \ 5 – 3 + 2 * 4 Tính baèng tay:10/2\5 – 3 + 2*4 = 5/(10/2) – 3 + 8 = 5 / 5 – 3 + 8 = 6 Tính baèng matlab : >> 10/2\5-3+2*4 ans = 6 3+ 4 5+ 2 Dùng matlab tính các biểu thức sau và lưu lại kết qu : a. >> ( 3 + 4 )/(5+sqrt(2)) ans = 1.0913 b. 2π 2 >> 2*pi^2 ans = 19.7392 c. 3 4.5 >> 4.5^(1/3) ans = 1.6510 V .Làm vi c với mảng trên cửa sổ l nh. 1. Gán dữ liệu nguyên, thực, phức cho m ng một chiều, hai chiều bằng chỉ s . - m ng 1 chiều. Thực hiện các dòng lệnh sau lưu lại kết qu . >> X(3) = 4 % phần tử thứ 3 của m ng là 4. X= 0 0 4 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 61 >> X(2) = 1 + 3i % phần tử thứ 2 của m ng là 1 +3i X= 0 1.0000 + 3.0000i 4.0000 - m ng 2 chiều : Thực hiện các dòng lệnh sau lưu lại kết qu . >> T(1,1) = 1 % gán giá trị cho m ng theo chỉ số , T= 1 >> T(1,2) = 46 T= 1 46 >> T(2,1) = 3 + 2i T= 1.0000 46.0000 3.0000 + 2.0000i 0 >> T(2,2) = 4.34 T= 1.0000 46.0000 3.0000 + 2.0000i 4.3400 2. Gán dữ liệu nguyên, thực, phức cho m ng một chiều, hai chiều bằng nội dung. - m ng 1 chiều. Thực hiện các dòng lệnh sau lưu lại kết qu : >> x = [ 3 1 5 ] % gán vevtor hàng 3 1 5 cho biến x. x= 3 1 5 >> y = [ 2.1 4.6 3.8 ] y= 2.1000 4.6000 3.8000 >> z = [ 2+3i 7-4i 9+5i ] z= 2.0000 + 3.0000i 7.0000 - 4.0000i 9.0000 + 5.0000i SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 62 - m ng 2 chiều: Thực hiện các dòng lệnh sau lưu lại kết qu . >> t = [ 6 5 ; 5 3 ] t= 6 5 5 3 >> u = [ 8.1 3.6 ; 3.5 7.2 ] u= 8.1000 3.6000 3.5000 7.2000 >> v = [ 3+i 7-7i ; 8-4i 4+5i ] v= 3.0000 + 1.0000i 7.0000 - 7.0000i 8.0000 - 4.0000i 4.0000 + 5.0000i 3. Truy cập m ng một chiều, hai chiều bằng chỉ số. A(i,j) truy cập phần tử có chỉ số i,j A(1: k,j) truy cập từ phần tử thứ nh t đến phần tử thứ k của cột j A(i,1:k) truy cập từ thứ 1 đến phần tử thứ k của hàng i Trước tiên ta gán nội dung cho m ng. >>z = [ 2 3.4 4+ 3i ; 2 3 + 2i 7.2] z= 2.0000 3.4000 4.0000 + 3.0000i 2.0000 3.0000 + 2.0000i 7.2000 Truy cập phần tử có chỉ số 2,1 >>z (2,1) % truy cập phần tử thứ 2 của cột 1. ans = 2 Truy cập từ phần tử thứ 1đến phần tử thứ 2 của cột 1 >> z(1:2,1) % truy cập phần tử : từ 1 đến 2 của cột 1. ans = 2 2 Truy cập từ phần tử thứ 1 đến phần tử thứ 3 của hàng 2. >> z(2,1:3) % truy cập phần tử thứ 1 đến 3 của hàng 2. ans = 2.0000 3.0000 + 2.0000i 7.2000 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 63 VI .Th c hành một s hàm với mảng trên cửa sổ l nh. sum, prod, diff, trace, diag, eye, ones, zeros, magic, randn, inv, eig . . . sum(A) : tạo ra vector hàng với các phần tử là tổng của các phần tử của các cột tương ứng. prod(A) : tạo vector hàng với các phần tử là tích của các phần tử của các cột tương ứng. diff(A) : tính các sai biệt giữa các phần tử kế nhau của ma trận A. trace(A) : tính vết của ma trận A ( tổng các phần tử trên đường chéo). eye(n) : tạo ra ma trận đơn vị. magic(n) : tạo ma trận vuông với tổng các phần tử hàng, cột và đường chéo là bằng nhau. rand(n) : tạo ma trận vuông với các phần tử được phân bố ngẫu nhiên. Thực hiện các lệnh sau và lưu lại kết qu . >> z = [ 3.4 4+3i ; 2 3+2i ] % gán ma trận c p 2x2 cho biến z z= 3.4000 4.0000 + 3.0000i 2.0000 3.0000 + 2.0000i >> I = sum(z) % tính tổng ma trận theo cột tương ứng. I= 5.4000 7.0000 + 5.0000i >> J = prod(z) % tính tích các cột tương ứng J= 6.8000 6.0000 +17.0000i >> K = diff(z) K= -1.4000 -1.0000 - 1.0000i >> L = trace(z) L= 6.4000 + 2.0000i SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN >> P = eye(4) P= 1 0 0 0 1 0 0 0 1 0 0 0 * BAØI TAÄP MATLAB Trang 64 0 0 0 1 >> Q = magic(3) Q= 8 1 6 3 5 7 4 9 2 >> M = rand(5) M= 0.9501 0.7621 0.2311 0.4565 0.6068 0.0185 0.4860 0.8214 0.8913 0.4447 0.6154 0.7919 0.9218 0.7382 0.1763 0.4057 0.9355 0.9169 0.4103 0.8936 0.0579 0.3529 0.8132 0.0099 0.1389 1. Cho ma trận A = [2 4 1 ; 6 7 2 ; 3 5 9], viết lệnh Matlab để : >> A = [ 2 4 1 ; 6 7 2 ; 3 5 9 ] A= 2 4 1 6 7 2 3 5 9 a. Tạo vector x là hàng thứ nh t của A: >> x = A(1,1:3) % truy cập phần tử thứ 1 đến 3 của hàng 1 ma trận A x= 2 4 1 b. Tạo ma trận y là hai hàng còn lại (cuối) của A: >> y = A(2:3,1:3) % truy cập phần tử thứ 1 đến 3 của hàng 2 và hàng 3 % của ma trận A y= 6 3 7 5 2 9 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 65 c. Tính tổng theo hàng ma trận A: >> (sum(A'))' ans = 7 15 17 d. Tính tổng theo cột ma trận : >> sum(A) ans = 11 16 12 ⎡6 ⎢8 2. Cho ma trận C = ⎢ ⎢1 ⎢ ⎣5 9 7 3 2 5 2 4 8 1⎤ ⎡4 ⎥ ⎢3 3⎥ và D = ⎢ ⎢2 4⎥ ⎥ ⎢ 2⎦ ⎣5 >> C = [6 9 5 1; 8 7 2 3; 1 3 4 4; 5 2 8 2 ] 8⎤ 7 ⎥⎥ , dùng Matlab: 3⎥ ⎥ 1⎦ % gán các giá trị của ma trận % 4x4 cho biến C theo nội dung. C= 6 9 5 1 8 7 2 3 1 3 4 4 5 2 8 2 >> D = [4 8 ; 3 7 ; 2 3 ; 5 1] % gán các giá trị của ma trận % 2x4 cho biến D theo nội dung. D= 4 8 3 7 2 3 5 1 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 66 a. Tạo ma trận E1 là 2 cột nằm giữa của ma trận C sử dụng toán tử ‘:’ >> E1 = C(1:4,2:3) % truy cập phần tử thứ 2 đến 3 của % hàng 1 đến 4 của ma trận C E1 = 9 5 7 2 3 4 2 8 b. Tạo ma trận E2 từ hàng 1 và 2 và cột 2 và 3 của ma trận C sử dụng toán tử ‘:’ >> E2 = C(1:2,2:3) E2 = 9 5 7 2 c. Tạo ma trận E3 bằng cách ghép 2 ma trận E1 và D với nhau: >> E3 = [E1,D] E3 = 9 5 4 8 7 2 3 7 3 4 2 3 2 8 5 1 VII .Th c hành các phép toán mảng trên cửa sổ l nh. + : công ma trận. - : trừ ma trận. * : nhân ma trận. / : chia ph i ma trận. \ : chia trái ma trận. ^ : tóan tử lũy thừa ma trận. .* : tóan tử nhân hai phần tử tương ứng của hai ma trận. ./ : chia ph i hai phần tử tương ứng của hai ma trận. .\ : chia trái hai phần tử tượng ứng của hai ma trận. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 67 .^ : tóan tử lũy thừa từng mỗi phần tử của ma trận. Cho x = [1 4 8], y = [2 1 5] và A = [3 1 6 ; 5 2 7] >> x = [ 1 4 8 ] x= 1 4 8 >> y = [ 2 1 5 ] y= 2 1 5 >> A = [ 3 1 6 ; 5 2 7 ] A= 3 1 6 5 2 7 Thực hiện các phép tính sau: a. x*2 + y*3: >> x*2+y*3 ans = 8 11 31 b. x – y.^3: >> x - y.^3 ans = -7 3 -117 c. A*3 /x >> A*3/x ans = 2.0370 2.5556 d. A.^2 >> A.^2 ans = 9 1 36 25 4 49 ===================Hết Bài Tập Thực Hành Số 1 ================= SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 68 BÀI T P TH C HÀNH S 2 Th c hành l p trình với m-file Th c hành các l nh trên cửa sổ soạn thảo m-file. File-New : tạo tập tin mới. File-Open: mở tập tin đã có sẵn. File-Save: lưu tập tin lệnh đĩa. File-Save as lưu tập tin lên đĩa với một tên khác. I. L p trình với m-file. Sử dụng vòng lặp for, vòng lặp while, lệnh rẽ nhánh if, if-else, if-elseifelse, lệnh kiểm tra trường hợp case, lệnh break… 1. L p trình với Script m-file. a. Chương trình vẽ đường tròn tâm (3,2) và bán kính 3. % ve duong tron tam 3,2 t = 0:pi/100:2*pi; x = 3 + 3*cos(t); y = 2 + 3*sin(t); plot(x,y,'b','linewidth',1.5 ,'linestyle' , '+' ),grid xlabel('x') ylabel('y') title('ve duong tron tam 3 2') % End of program . % lệnh ‘linewidth’ : dùng cài đặt độ rộng nét vẽ. % lệnh ‘linestyle’ cài đặt kiểu của nét vẽ. Save lại với tên là Duongtron.m Nh n F5 để run hay trong cửa sổ command window gõ lệnh: >>Duongtron Cho kết qu là hình bên. b. Sinh viên tự viết 1 Script m-file có nhiệm vụ vẽ 1 hình Sin % Begin of program x = 0:pi/100:2*pi ; y = sin(x) ; plot(x,y,'b','linewidth',1.5 ,'linestyle' , '+' ),grid xlabel('x') ylabel('y') title('ve do thi y = sin(x)') % End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 69 Hay ta có thể gõ lần lượt các lênh sau trước d u nhắc của cửa số commandWindow >> x = 0:pi/100:4*pi; >> y = sin(x); >> plot(x,y,'b'); >> grid on >> xlabel('X') >> ylabel('Y') >> title(' do thi y = sin(x)') Chạy chương trình cho ta kết qu như hình : 2. L p trình với function m-file. a. Chương trình gi i pt bậc 2. % Function m-file function [x1, x2] = quadratic(a,b,c) x = roots([a b c]); x1 = x(1) x2 = x(2) %End Save lại với tên là quadratic.m , trong cửa sổ command window gõ lệnh >> quadratic ( 1 ,2 ,-3) % giai pt: x^2 + 2*x -3 = 0 x1 = SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 70 -3 x2 = 1 b. Sinh viên tự viết 1 function m-file gi i phương trình bậc 2 mà không dùng hàm roots mà matlab đã hổ trợ. % chuong trinh giai phuong trinh bac 2 khong dung ham roots a = input('nhap he so a :'); b = input('nhap he so b :'); c = input('nhap he so c :'); radical = sqrt(b^2 - 4*a*c); x1 = (-b+radical)/(2*a) x2 = (-b-radical)/(2*a) % End of program Chạy chương trình cho kết qu sau : % giai pt: a*x^2 + b*x +c = 0 nhap he so a :1 nhap he so b :2 nhap he so c :-3 x1 = 1 x2 = -3 II. Th c hành với các l nh nh p xuất d li u input và disp trong Script và function m-file. a. Thực hiện lại chương trình gi i pt bậc 2 với các hệ số a, b, c nhập từ bàn phím. % Script m-file a = input ('nhap he so a:'); b = input ('nhap he so b:'); c = input ('nhap he so c:'); disp (' nghiem cua pt bac 2 la :' ) x = roots([a b c]); x1 = x(1) x2 = x(2) % End of program Save lại với tên là quadratic2.m , trong cửa sổ command window gõ lệnh: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 71 >> quadratic2 nhap he so a:1 nhap he so b:3 nhap he so c:-4 nghiem cua pt bac 2 la : x1 = -4 x2 = 1 b. Sinh viên tự thực hiện chương trình vẽ đường cong parabol y=a*x^2 + b với các hệ số a, b, nhập từ keyboard: Cách vẽ 1: % Begin of program a = input ('nhap he so a:'); % nhập hệ số a từ bàn phím b = input ('nhap he so b:'); % nhập hệ số b từ bàn phím x = 0:0.01:1; p = [ a 0 b]; % tạo ra đa thức: y = a*x^2 + 0*x + b = a*x^2 + b y = polyval(p,x); % xác định y ứng với các giá trị của x. plot(x,y,'b','linewidth',1.5 ,'linestyle' , '+' ),grid xlabel('x') ylabel('y') title('ve duong cong parabol y = a*x^2 + b') % End of program. Cách vẽ 2: % Begin of program a = input ('nhap he so a:'); % nhập hệ số a từ bàn phím b = input ('nhap he so b:'); % nhập hệ số b từ bàn phím x = 0:0.01:1; y = a*x.^2 + b plot(x,y,'b','linewidth',1.5 ,'linestyle' , '+' ),grid xlabel('x') ylabel('y') title('ve duong cong parabol y = a*x^2 + b') % End of program Chạy chương trình trên cho ta kết qu như hình dưới dây: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 72 c. Sinh viên tự thực hiện chương trình tính trung bình các số với số lượng các số ( ít hơn 10 số) và giá trị các số được nhập từ bàn phím và xu t giá trị trung bình cuối cùng ra màn hình. % Chuong trinh tinh trung binh : n = input('Enter n :'); % nhập số lượng các số cần tính trung bình i = 1; % gán số 1 cho biến i s = 0; % gán số 0 cho biến s while i <= n; % dùng vòng lặp while , nếu i <= n cho phép vòng lặp mới x = input('Enter x :'); % nhập giá trị x thứ nh t s=s+x; % s = s cũ + với giá trị x mới nhập i = i + 1; % tăng giá trị biến i lên 1 đơn vị end % từ khóa kết thúc vòng lặp while Tb = s/n % xu t giá trị trung bình cuối cùng ra màn hình command windown % end of program Chạy chương trình trên cho ta kết qu sau : Enter n :5 Enter x :3 Enter x :4 Enter x :5 Enter x :6 Enter x :7 Tb = 5 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 73 III. Th c hành hàm chính, hàm con . Tạo 1 hàm trong đó có nhìu hàm con hàm đầu tiên là là hàm chính và ph i có tên cùng tên với m-file, còn các hàm con ph i có tên khác với m-file. a. Thực hiện đoạn code sau : % Function m-file function [z,s] = main(x,y) z = total(x,y) s = subtract(x,y) function z = total(x,y) z = x + y; function s = subtract(x,y) s = x – y; %end of function Save lại với tên là main.m , trong cửa sổ command window gõ lệnh >> main(9,4) z= 13 s= 5 >> main(9,6) z= 15 s= 3 b. Sinh viên tự tạo ra 1 Script m-file cho phép nhập chiều dài và chiều rộng của 1 hình chữ nhật từ bàn phím và xu t giá trị độ dài đường chéo ra màn hình ( ph i sử dụng hàm con trong chương trình). Chương trình thực hiện yên cầu : % Function m-file function [c] = chunhat(a,b) c = total(a,b) function c = total(a,b) c =sqrt( a.^2 + b.^2) %End of function SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 74 Chạy chương trình và cho ta kết qu sau: >> chunhat(3,4) c= 5 Cách khác không dùng hàm con: % Begin of program a = input('nhap gia tri a :'); b = input('nhap gia tri b :'); c = sqrt(a.^2 + b.^2) % End of program. Ví dụ : nhap gia tri a :4 nhap gia tri b :3 c= 5 IV. Th c hành các hàm xử lý chuổi. Các hàm matlab hổ trợ. double: đổi chuỗi sang mã ASCII. char: tạo m ng ký tự từ m ng số. strcmp: so sánh chuỗi. strcat: nối chuỗi. num2str: đổi số sang chuôi. str2num: đổi chuổi sang số. int2str: đổi số nguyên sang chuỗi. a. Th c hi n các đoạn code sau. >> name = 'Truong Dai Hoc DL Cong Nghe Sai Gon' name = Truong Dai Hoc DL Cong Nghe Sai Gon >> name(8:35) % truy cập chuỗi từ ký tự 8 đến ký tự 35. ans = Dai Hoc DL Cong Nghe Sai Gon SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 75 Tiếp tục th c hi n: >> text1 = 'toi hoc tai' >> text = [text1 ' ' name] % gán chuỗi toi hoc tai cho text1. % kết hợp 2 chuỗi >> text1= 'Toi hoc tai' text1 = Toi hoc tai >> text = [text1 ' ' name] text = Toi hoc tai Truong Dai Hoc DL Cong Nghe Sai Gon b. Th c hi n các đoạn code sau >> A = 'Dai Hoc Sai Gon' A= Dai Hoc Sai Gon >> B = double(A) B= Columns 1 through 12 68 97 105 32 72 111 99 32 83 97 105 32 Columns 13 through 15 71 111 110 >> C = char(B) C= Dai Hoc Sai Gon c. th c hi n các đoạn code và cho kết quả sau : >> Tg = 2.2774; >> xg = 144.6364; >> disp(['time of flight:' num2str(Tg) 's']) time of flight:2.2774s >> disp(['distance traveled:' num2str(xg) 'ft']) distance traveled:144.6364ft V. Th c hành mảng cấu trúc trên cửa sổ l nh. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN - * BAØI TAÄP MATLAB Trang 76 Tạo mảng cấu trúc. >> SinhVien(1).hovaten = 'Nguyen Thanh Liem'; >> SinhVien(1).diemtoan = 6; >> SinhVien(1).diemly = 7; >> SinhVien(2).hovaten = 'Nguyen Hoang Anh'; >> SinhVien(2).diemtoan = 7; >> SinhVien(2).diemly = 8; . - Truy c p mảng cấu trúc. >> SinhVien(1) % truy cập thông tin về thành viên thứ 1 của m ng. ans = hovaten: 'Nguyen Thanh Liem' diemtoan: 6 diemly: 7 >> SinhVien(2) % truy cập thông tin về thành viên thứ 1 của m ng. ans = hovaten: 'Nguyen Hoang Anh' diemtoan: 7 diemly: 8 >> SinhVien(1).diemtoan ans = 6 % xem điểm toán của thành viên 1. >> SinhVien(2).hovaten ans = Nguyen Hoang Anh % xem họ và tên của thanh viên 2. ===================Hết Bài Tập Thực Hành Số 2 ================= SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB BÀI T P TH C HÀNH S Xử lý đồ họa Trang 77 3 I. Xử lý đồ họa hai chiều. 1. Hàm vẽ đồ thị hai chiều plot(x,y, s), trong đó y là vectơ điểm vẽ theo vectơ điểm x, s là chuổi ký tự ký hiệu thiết lập màu tô và nét vẽ. ( dùng lệnh >>help plot để biết thêm c u trúc hàm plot). >> x = 0:pi/100:2*pi; >> y = sin(x); >> plot(x,y) Kiểm tra và lưu kết qu . Để vẽ thêm 1 hàm x.sin(x) lên cùng 1 đồ thị ta dùng thêm các lệnh sau. >> z = x.*sin(x); >> plot(x,y,x,z) Kiểm tra và lưu kết qu . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 78 2. - Hàm xlabel tạo nhãn trên trục tọa độ x và hàm ylabel tạo nhãn trên trục tọa độ y, grid tạo m ng kẻ lưới, hold on/off giữ lại đồ thị truớc đó. - Hàm tilte tạo tiêu đề đồ thị và hàm legend tạo nhãn các đồ thị tương trên cửa sổ hình. - Hàm axis([Xmin Xmax Ymin Ymax]) thiết lập tọa độ nhỏ nh t và lớn nh t trên trục tọa độ X-Y. Tiếp theo phần 1 ta thực hiện tiếp >> legend ('sin(x)','x.sin(x)') >> xlabel('time') >> ylabel('amplitude') >> title('do thi y=sin(x) and z=x.sin(x)') >> axis([0 2*pi -5 5]) >> grid on % tạo m ng kẻ lưới Kiểm tra và lưu kết qu . Sinh viên tự thực hiện đồ thị sau. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 79 chương trình thực hiện yên cầu trên : % Begin of program t = 0:pi/100:4*pi; y1 = 4*t.^2.*sin(t); y2 = 100*sin(t.^2); plot(t,y1,t,y2); Xlabel('thoi gian'); ylabel('bieu do'); axis([0 10 -300 300]);grid title(' do thi y1 = 4*t.^2.*sin(t) va 100*sin(t.^2)') % End of program Chương trình 2 : % Begin of program t = 0:pi/100:4*pi; y1 = 4*(t.^2).*sin(t); y2 = 100*sin(t.^2); plot(t,y1,t,y2); Xlabel('thoi gian'); ylabel('bieu do'); axis([0 10 -300 300]);grid ; title(' do thi y1 = 4*t.^2.*sin(t) va 100*sin(t.^2)'); % End of program Hay ta có thể gõ trực tiếp các lệnh trong cửa sổ CommadWindow như sau: >> t = 0:pi/100:4*pi; >> y1 = 4*t.^2.*sin(t); >> y2 = 100*sin(t.^2); >> plot(t,y1,t,y2); >> Xlabel('thoi gian'); >> ylabel('bieu do'); >> axis([0 10 -300 300]); >> grid on SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 80 >> title(' do thi y1 = 4*t.^2.*sin(t) va 100*sin(t.^2)') ; 3. Hàm subplot(m,n,p) chi khung hình figure ra nhiều khung con, trong đó mỗi khung chứa một đồ thị với m là số khung theo dòng, n là số khung theo cột, p là số thứ tự của các khung được thiết lập. - Chia khung hình figure ra làm 2 mỗi khung chứa 1 đồ thị mà ta đã thực hiện ở phần trên 1 và 2. Gợi ý: Trong quá trình vẽ đồ thị y=sin(x) và z=x.sin(x) thay thế dòng lệnh plot(x,y,x,z) thành subplot(211),plot(x,y,x,z) khi đó đồ thị sẽ vẽ ở nữa trên khung hình. Kiểm tra và lưu kết qu . %Begining of program x = 0:pi/100:2*pi; y = sin(x); z = x.*sin(x); subplot(2,1,1); % lenh cho phet tao ra nhung khung chua plot(x,y,x,z); grid; xlabel('x'); ylabel('y'); title('y = sin(x)and z = x.sin(x)'); % End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 81 Chương trình vẽ 2 đồ thi y = sin(x) và z = x.*sin(x) trên 2 khung trên cùng một cửa sổ Figue: %Begining of program x = 0:pi/100:2*pi; y = sin(x); z = x.*sin(x); subplot(2,1,1) % lenh cho phet tao ra nhung khung chua plot(x,y,'linewidth',1.0,'linestyle','o','color','b') grid xlabel('x') ylabel('y') title('y = sin(x)') legend ('sin(x)',-1) % lech cho phep hien thi ten va mau do thi ve subplot(2,1,2) % leänh cho pheùt taïo ra nhöõng khung chöùa plot(x,z,'linewidth',1.0,'linestyle','.','color','r') grid % lenh tao mang luoi xlabel('x') % lenh xlabel(x) : gian nhan truc x ylabel('y') title('z = x.sin(x)') % title( y = sin(x)): gan nhan cho do thi. legend ('cos(x)',-1) % lech cho phep hien thi ten va mau do thi ve % End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 82 Chương trình vẽ 4 đồ thi trên 4 khung trên cùng một cửa sổ Figue: %Begining of program x = -2*pi:pi/100:2*pi; y1 = sin(x); y2 = cos(x); y3 = sinc(x); y4 = 1 - sin(x); subplot(2,2,1) plot(x,y1,'linewidth',1.0,'linestyle','.','color','m') grid xlabel('x') ylabel('y') title('y1 = sin(x)') legend ('sin(x)',-1) subplot(2,2,2) plot(x,y2,'linewidth',1.0,'linestyle','.','color','b') grid xlabel('x') ylabel('y') title('y2 = cos(x)') legend ('cos(x)',-1) subplot(2,2,3) plot(x,y3,'linewidth',1.0,'linestyle','.','color','r') grid xlabel('x') ylabel('y') title('y3 = sinc(x)') legend ('sinc(x)',-1) subplot(2,2,4) plot(x,y4,'linewidth',1.0,'linestyle','.','color','g') grid xlabel('x') ylabel('y') title('y4 = 1 - sin(x)') legend ('1-sin(x)',-1) % End of program SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 83 4. Tạo nét vẽ khác nhau dùng, màu vẽ khác nhau. Dùng lệnh >>help plot để biết thêm c u trúc hàm plot. Thực hiện lại đoạn code sau và lưu kết qu . >> x = 0:pi/100:2*pi; >> y = cos(x); >> plot(x,y,’ro:’) SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 84 II. Xử lý đồ họa ba chiều. 1. Hàm plot3(x,y,z,s): dùng để vẽ các đường trong không gian 3 chiều, trong đó x,y, z là các vector điểm, s là chuổi ký hiệu cho màu và nét vẽ. Thực hiện lại đoạn code sau và lưu kết qu . >> t = 0:pi/50:10*pi; >> x = sin(t); >> y = cos(t); >> z = t; >> plot3(x,y,z,'ro:') >> grid on % co the ung lenh sau: >> plot3(x,y,z,'Linewidth',3.0,'Linestyle','o','color','b') >> grid on 2. Hàm [x,y] = meshgrid(x,y) tạo hai vector điểm x, y kết hợp vẽ đồ thị ba chiều với hàm surf(x,y,z,c) và mesh(x,y,z,c). Dùng để vẽ các vật thể 3D trong không gian 3 chiều. Meshgrid: định lưới vẽ. Mesh: vẽ mắt lưới 3D. Vẽ mặt paraboloid z = x 2 + y 2 trong không gian 3 chiều. Thực hiện lại đoạn code sau và lưu kết qu . >>close all >> t = -5:0.5:5; % cho t chay tu -5 den 5 voi buoc nhay 0.5 >> [x,y] = meshgrid(t); %dinh luoi ve. >> z = x.^2 + y.^2 ; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 85 >> mesh(x,y,z,'Edgecolor','b'),title('mesh(z)') %ve mat luoi 3D Sinh viên tự vẽ mặt z = sin( x 2 + y 2 ) x2 + y2 trong không gian 3D và lưu kết qu . Cách 1: Th c hi n chương trình trong m-file: % ve khong gian 3 D [x,y] = meshgrid(-2:0.1:2); z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2); surf(x,y,z,'Edgecolor','r'),title('do thi z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2)'); % End of program Chạy chương trình cho ta kết qu : Cách 2: đánh tr c tiếp các l nh trong cửa sổ Command Window: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 86 >> [x,y] = meshgrid(-2:0.1:2); >> z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2); >> surf(x,y,z,'Edgecolor','r'),title('do thi z = sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2)') III. Th c hành tạo cửa sổ giao di n. Tạo giao di n người sử dụng sử dụng công cụ Guide. Sử dụng công cụ Guide mà malab hỗ trợ để lập trình tạo giao diện. Gõ lệnh guide trước d u nhắc của cửa sổ lệnh, màn hình chính của guide xu t hiện. 1. Thực hiện tạo giao diện gi i phương trình bậc 2 a .x 2 + b.x + c = 0 , với các hệ số a, b, c có thể thay đổi. Với giao diện đề nghị như sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 87 Trước tiên ta tạo giao diện guide như hình döôùi ñaây: Ñeå coù ñöôïc hình nhö treân ta caàn taïo caùc ñoái töôïng sau: STT Edit Text ( soá löôïng 3 ) Fontsize String SVTH : VÖÔNG VAÊN HUØNG * Tag Color CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN 1 2 3 STT 1 2 3 4 5 6 7 8 STT 1 12 12 12 Fontsize 12 12 12 12 12 12 12 12 0 0 0 Trang 88 Hesoa Hesob Hesoc Static Text ( soá löôïng 8) String Tag 2 Giai pt: ax + bx +c Text1 a Text2 b Text3 c Text4 Boû troáng Ketquax1 Boû troáng Ketquax2 X1 = Text7 X2 = Text8 Push Button ( soá löôïng 1) Fontsize String Tag 12 Giai PT Giai_pt White White White color Tuøy yù Tuøy yù Tuøy yù Tuøy yù White white Tuøy yù Tuøy yù Color Tuøy yù Sau khi taïo song caùc ñoái töôïng treân, ta neân save noù vôùi teân ( Giaipt.fig ), roài tieáp tuïc Chọn view M-file editor ôû treân cöûa soå cuûa giao dieän guide vöøa taïo song, khi ñoù se xuaát hieän moät cöûa soå cuûa M-file coù chöông trình cuûa giao dieän guide maø ta vöøa taïo, ta soạn th o theâm đoạn chöông trình döôùi vaøo cuoái chöông trình cuûa m-file ñoù. % Chöông trình giaûi phöông trình baäc 2 caàn theâm vaøo : function Giai_pt_Callback(hObject, eventdata, handles) %code xu ly giai phuong trinh khi ta an nut Gai pt hesoa= str2double(get(handles.hesoa,'string')) hesob= str2double(get(handles.hesob,'string')) hesoc= str2double(get(handles.hesoc,'string')) x = roots([hesoa hesob hesoc]); set(handles.ketquax1,'string',x(1)) set(handles.ketquax2,'string',x(2)) SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 89 % --- Executes during object creation, after setting all properties. Sau khi soaïn song ñoaïn chöông trình ñoù, ta save vaø chaïy chöông trình vaø nhaäp caùc soá a b c vaøo, tieáp tuïc nhaán vaøo nut Giai PT cho ta keát quaû nhö hình döôùi : Chương trình trong M-file cuûa giao diện: %Begin of program function varargout = giaiptbac2(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @giaiptbac2_OpeningFcn, ... 'gui_OutputFcn', @giaiptbac2_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 90 if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function giaiptbac2_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); function varargout = giaiptbac2_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function hesoa_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function hesoa_Callback(hObject, eventdata, handles) function hesob_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function hesob_Callback(hObject, eventdata, handles) function hesoc_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function hesoc_Callback(hObject, eventdata, handles) % doan chuong trinh giai Phuong trinh bac 2: function Giai_pt_Callback(hObject, eventdata, handles) hesoa= str2double(get(handles.hesoa,'string')) hesob= str2double(get(handles.hesob,'string')) hesoc= str2double(get(handles.hesoc,'string')) x = roots([hesoa hesob hesoc]); set(handles.ketquax1,'string',x(1)) set(handles.ketquax2,'string',x(2)) SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 91 %En of proram % --- Executes during object creation, after setting all properties. 2. Sinh viên thực hiện chương trình sau khi ta nhập các hệ số cho đồ thị và xu t dạng đồ thị y = a sin( x ) + b cos( x ) ra màn hình. Với giao diện đề nghị như sau: Ñeå coù ñöôïc hình nhö treân ta caàn taïo caùc ñoái töôïng sau: STT 1 2 STT 1 2 3 Edit Text ( soá löôïng 2 ) Fontsize String 12 0 12 0 Fontsize 12 12 12 Static Text ( soá löôïng 8) String Do Thi y = asin(x) + bcos(x) He so a He so b SVTH : VÖÔNG VAÊN HUØNG * Tag a b Color White White Tag Text1 Text2 Text3 color Tuøy yù Tuøy yù Tuøy yù CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN STT 1 STT 1 2 Xgrid on * BAØI TAÄP MATLAB Axes ( soá löôïng 1) Ygrid on Tag DoThi Push Button ( soá löôïng 1) Fontsize String Tag 12 BIEU DIEN DoThi 12 EXIT Close Trang 92 NextPlot replacechilden Color Tuøy yù Tuøy yù Cuõng töông töï nhö baøi 1, Sau khi taïo song caùc ñoái töôïng treân, ta neân save noù vôùi teân ( DotThi.fig ), roài tieáp tuïc Chọn view M-file editor ôû treân cöûa soå cuûa giao dieän guide vöøa taïo song, khi ñoù seõ xuaát hieän moät cöûa soå cuûa M-file coù chöông trình cuûa giao dieän guide maø ta vöøa taïo, ta soạn th o theâm đoạn chöông trình döôùi ñaây vaøo cuoái chöông trình cuûa m-file ñoù. % Doan chuong trinh thuc hien ve do thi function DoThi_Callback(hObject, eventdata, handles) a = str2double(get(handles.a,'string')) % cho phep nhap he so a o Edit Text b = str2double(get(handles.b,'string')) % cho phep nhap he so a o Edit Text x = 0:pi/100:5*pi; y = a*sin(x) + b*cos(x); plot(x,y,'b'); set(handles.axes,'string') % End of proram Sau khi soaïn song ñoaïn chöông trình ñoù, ta save vaø chaïy chöông trình vaø nhaäp laàn löôït caùc heä soá a vaø b vaøo, nhaán vaøo nuùt BIEU DIEN cho ta keát quaû nhö hình döôùi : SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 93 CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 94 Khi nhaán vaøo nuùt EXIT laäp töùc cöûa soå giao dieän Guide seõ ñoùng laïi Chöông trình M-file taïo ra giao dieän treân laø : % Begin of program: function varargout = DoThi(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @DoThi_OpeningFcn, ... 'gui_OutputFcn', @DoThi_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 95 % --- Executes just before DoThi is made visible. function DoThi_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for DoThi handles.output = hObject; % Update handles structure guidata(hObject, handles); % --- Outputs from this function are returned to the command line. function varargout = DoThi_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes during object creation, after setting all properties. function a_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function a_Callback(hObject, eventdata, handles) function b_CreateFcn(hObject, eventdata, handles) if ispc set(hObject,'BackgroundColor','white'); else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end function b_Callback(hObject, eventdata, handles) % --- Executes on button press in close. function close_Callback(hObject, eventdata, handles) % Doan chuong trinh thuc hien ve do thi function DoThi_Callback(hObject, eventdata, handles) a = str2double(get(handles.a,'string')) % cho phep nhap he so a o Edit Text b = str2double(get(handles.b,'string')) % cho phep nhap he so a o Edit Text x = 0:pi/100:5*pi; y = a*sin(x) + b*cos(x); SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 96 plot(x,y,'b'); set(handles.axes,'string') % End of proram =================Hết Bài Tập Thực Hành Số 3=============== SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 97 BÀI T P TH C HÀNH S 4 Simulink ứng dụng trong các ngành kỹ thu t I. Th c hi n các thao tác trên màn hình chính của simulink. Caùc thaønh phaàn cô baûn cuûa Simulink : Simulink Library Brower : cửa sổ chính. Simulink library : cửa sổ chứa các thư viện. Simulink parameters : cửa sổ hiệu chỉnh các thông số của mô hình simulink. Model : cửa sổ cho phép sọan th o mô hình simulink Scope : cửa sổ hiển thị đồ thị mô phỏng của mô hình simulink. Làm việc với simulink, khởi động simulink bằng lệnh >>simulink Cửa sổ chính Simulink Library Brower xu t hiện như hình: II. Th c hi n các thao tác trên màn hình soạn thảo mô hình. Taïo moâ hình simulink : Tạo mô hình simulink gồm các bước là Khởi tạo Simulink. Mở cửa sổ mới model với lệnh file-new-model. Sọan th o mô hình với các khối từ thư viện simulink library. Chỉnh sửa dữ liệu trong mô hình. Liên kết các khối trong mô hình. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 98 Lưu mô hình lên đĩa với lệnh file-save từ cửa sổ model với phần đuôi mặc định là .mdl. Chạy mô hình với lệnh simulation-start từ cửa sổ model. Soạn thảo mô hình : Chọn khối : click chuột lên khối đó. Hủy bỏ khối : Click chuột lên khối đó và nh n phím delete. Di chuyển khối : Drag chuột kéo khối đến vị trí mong muốn Liên kết các khối : Drag chuột từ ngõ ra của khối này đến ngõ vào của khối khác. Với các đường khuỷu : Grag chuột kết hợp với phím Ctrl. Chọn tòan bộ mô hình : Drag chuột bao quanh mô hình. Các thư vi n cơ bản của simulink : continuous : thư viện chứa các khối cho phép xây dựng các mô hình của các hệ liên tục. discontinuities : thư viện chứa các khối cho phép xây dựng các mô hình của các hệ gián đọan. discrete : thư viện chứa các khối cho phép xây dựng các mô hình của các hệ rời rạc. user-defined-function : thư viện chứa các khối cho phép người sử dụng dùng hàm hoặc S-function tự tạo để xây dựng các mô hình theo ý muốn. sinks : thư viện chứa các khối xu t tín hiệu của mô hình. sources : thư viện chứa các khối nhập dữ liệu của mô hình. Matlab operations : thư viện chứa các khối tóan học. Subsystem : thư viện chứa các khối cho phép tạo các hệ con của mô hình. III. Xây d ng mô hình h th ng xe tải: Mô hình xe t i cho bởi phương trình: m dv dv 1 = u − bv hay = ( u − bv ) dt dt m Trong đó m là khối lượng xe, u là lực tác động của động cơ (ngõ vào của mô hình), b là hệ số ma sát và v là vận tốc đạt được (ngõ ra của mô hình). SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 99 Xu t phát của việc xây dựng các mô hình hệ thống từ các phương trình vi phân tương ứng là các khối tích phân (Integrator). Nếu trong phương trình mô t hệ thống có vi phân bậc n thì ta sẽ đặt vào mô hình n khối tích phân, do quan hệ ∫ dt dv =v • Mở một cửa sổ mô hình mới. • Đặt vào mô hình khối ‘Integrator’ từ thư viện ‘Continuous’ và kẻ các đường thẳng nối đến ngõ vào và ngõ ra của khối này. • Đặt nhãn ‘vdot’ (dv/dt) cho cho đường nối đến ngõ vào và ‘v’ cho đường nối đến ngõ ra bằng cách nh p đúp chuột ngay phía trên các đường này. Từ phương trình hệ thống ta th y dv/dt (vdot) bằng tích của thành phần (1/m) và thành phần tổng (u-bv), nên ta thêm khối 1/m ngay trước khối tích phân: • Đặt vào khối ‘Gain’ trong thư viện Math . • Nh p đúp chuột vào khối này để thay đổi độ lợi thành 1/m. • Đặt nhãn ‘inertia’ cho khối này để tượng trưng cho quán tính của xe (nh p đúp vào nhãn ‘Gain’ bên dưới khối). Bây giờ ta đặt khối tổng với 2 ngõ vào ‘+-‘, ngõ vào ‘+’ sẽ được nối với u, ngõ vào ‘-’ sẽ được nối với thành phần bv để được (u-bv) • Đặt vào khối ‘Sum’ trong thư viện Math • Nh p đúp vào khối này để đổi ngõ vào từ ‘++’ sang ‘+-’ Để được thành phần bv ta chỉ cần đặt thêm khối ‘Gain’ với độ lợi b: • Đặt khối ‘Gain’ có độ lợi b • Đặt nhãn là ‘damping’ tượng trưng cho thành phần lực c n của xe. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 100 Đến đây việc xây dựng mô hình xe t i với ngõ vào u và ngõ ra v coi như hoàn thành. Tuy nhiên, để mô phỏng mô hình này, ta cần đặt thêm khố ‘Step’ vào u và hiển thị v trên khối ‘Scope’ • Đặt khối ‘Step’ trong thư viện sources biên độ u ngay ngõ vào. • Đặt khối ‘Scope’ trong thư viện sinks ngay ngõ ra v. Nhớ rằng m, b và u là các biến cần được gán trị trước khi mô phỏng. >>m=1000 >>b=50 >>u=500 Thời gian mô phỏng hệ thống tùy thuộc vào thông số ‘Stop time’ trong menu ‘SimulationŌSimulation paramrters’, gi sử đặt 120 như Hình. Để chạy mô phỏng, ta có thể thực hiện bằng 1 trong các cách: • nh p chuột vào biểu tượng trên menubar của mô hình • chọn: Simulation Ō Start • Ctrl-T Nh p đúp vào ‘Scope’ để xem kết qu mô phỏng. Sinh viên thực hiện kiểm tra và lưu kết qu . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 101 Khi ta nhập các giá trị và chạy mô phòng được kết qu là hình dưới >> u = 500; >> m = 1000; >> b = 50; Khi ta thay đổi các giá trị và chạy mô phòng được kết qu là hình dưới: >> m = 100; >> b = 10; >> u = 1000; SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 102 IV. Xây d ng mô hình h th ng điều khiển vị trí motor DC: Hệ thống điều khiển vị trí motor DC cho bởi phương trình vi phân sau: Trong đó: J = 0.01 Kgm2/s2 b = 0.1 Mms K = Ke = Kt = 0.01 Nm/A R = 10 ohm L = 0.5 H V θ i motor. là moment quán tín của rotor là hệ số ma sát của các bộ phận cơ khí là hằng số sức điện động là điện trở dây qu n là hệ số tự c m là điện áp đặt lên cuộn dây của motor là vị trí trục quay (ngõ ra của mô hình) là dòng điện chạy trong cuộn dây của Mô hình toán hệ điều khiển vị trí motor DC Quan sát từng phương trình mô t hệ thống ta th y c u trúc của chúng cũng tương tự như phương trình của câu trước. Sinh viên lần lượt thực hiện trên từng phương trình để được hình : Tương tự như bài trên ta vào các thư viện lần lượt l y ra các khối như hình dưới: vào thư viện Neural Network Blockset /Net Input Functions chọn khối netsum , sau đó nh p đúp vào khối này để đổi số 2 sang ‘+-’ trong ô “List of signs” ta được khối sum 1 như hình dưới. Tương tự làm như vậy nếu ta thay số 2 thành ‘- + -’ thì ta được khối Sum như hình dưới. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 103 Sau khi l y ra các khối, ta thay đổi tên và thông số cho khối cũng như đường kết nối giữa các khối như hình. Kết hợp 2 phương trình: Đặt vào mô hình khối ‘Step’ để làm tín hiệu tham kh o, khối ‘Scope’ để quan sát đáp ứng. Từ mô hình Simulink hoàn chỉnh Sinh viên hãy gán trị cho t t c các thông số của mô hình, thực hiện mô phỏng và quan sát đáp ứng . Sinh viên thực hiện kiểm tra và lưu kết qu . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 104 Mô hình Simulink hoàn chỉnh của hệ điều khiển vị trí motor DC Gán các giá trị vào cho các tham số và chạy mô phỏng cho ta kết qua như hình dưới: >> J = 0.1; >> b = 0.05; >> K = 0.1; >> Kt = 0.1; >> Ke = 0.1; >> R = 5; >> L = 0.2; >> V = 220; Hãy thay đổi ngõ vào mô hình bằng khối tạo xung vuông. Sinh viên thực hiện kiểm tra và lưu kết qu . SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 105 Gán các giá trị vào cho các tham số và chạy mô phỏng cho ta kết qua như hình dưới: >> V = 240; >> L = 0.5; >> R = 5; >> Ke = 0.1; >> Kt = 0.1; >> K = 0.1; >> b = 0.02; >> J = 0.01; V. Xây d ng các S m-file function. Để hoàn thành tốt phần thí nghiệm này sinh viên cần tham kh o lại phần lý thuyết S-function. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 106 1. Three Time function Xây dựng mô hình simulink như hình, S m-file function có tác dụng nhân 3 lần tín hiệu ngõ vào Mã nguồn tham kh o S m-file function function [sys,x0,str,ts] = timesthree(t,x,u,flag) switch flag, case 0 [sys,x0,str,ts]=mdlInitializeSizes; case 3 sys=mdlOutputs(t,x,u); case { 1, 2, 4, 9 } sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]); end function [sys,x0,str,ts] = mdlInitializeSizes() sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 1; sizes.NumInputs = 1; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; sys = simsizes(sizes); str = []; x0 = []; ts = [-1 0]; function sys = mdlOutputs(t,x,u) sys = u * 3; % end mdlOutputs Sinh viên thực hiện kiểm tra và lưu kết qu =======================Hết Bài Tập Số 4====================== SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 107 BAØI THÍ NGHIEÄM 1 ÖÙNG DUÏNG MATLAB KHAÛO SAÙT HEÄ THOÁNG DUØNG GIAÛN ÑOÀ BODE Caâu .1. Tìm haøm truyeàn töông ñöông cuûa heä thoáng: Muïc ñích: Giuùp sinh vieân laøm quen vôùi caùc leänh cô baûn ñeå keát noái caùc khoái trong moät heä thoáng. Thí nghieäm: Baèng caùch söû duïng caùc leänh cô baûn conv, tf, series, parallel, feedback ôû phaàn phuï luïc chöông 2 (trang 85) trong saùch Lyù thuyeát ñieàu khieån töï ñoäng(Phaàn phuï luïc naøy coù keøm theo cuoái baøi höôùng daãn), tìm bieåu thöùc haøm truyeàn töông ñöông G(s) cuûa heä thoáng sau : G1 = s +1 s , G2 = 2 s + 2s + 8 ( s + 3)( s + 5) , G3 = 1 s , H1 = s + 2 Höôùng daãn: Treân cöûa soå commad windown laàn löôït ñaùnh caùc leänh tröôùc daáu nhaùy nhö sau: >> G1 = tf([1 1],conv([1 3],[1 5])) % nhaäp haøm truyeàn G1 Transfer function: s+1 -------------s^2 + 8 s + 15 >> G2 = tf([1 0],[1 2 8]) Transfer function: SVTH : VÖÔNG VAÊN HUØNG % nhaäp haøm truyeàn G2 * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 108 s ------------s^2 + 2 s + 8 >> G3 = tf(1,[1 0]) % nhaäp haøm truyeàn G3 Transfer function: 1 s >> H1 = tf([1 2],1) % nhaäp haøm truyeàn H1 Transfer function: s+2 >> G13 = parallel(G1,G3) % G13 = G1 + G3 , 2 haøm truyeàn song song Transfer function: 2 s^2 + 9 s + 15 -----------------s^3 + 8 s^2 + 15 s >> G2H1 = feedback(G2,H1) aâm. % G2H1 = G2 / (1 + G2*H1) cuûa heä hoài tieáp Transfer function: s --------------2 s^2 + 4 s + 8 >> Gh = series(G13,G2H1) % Gh = G13*G2H1 heä thoáng noái tieáp Transfer function: 2 s^3 + 9 s^2 + 15 s ----------------------------------------2 s^5 + 20 s^4 + 70 s^3 + 124 s^2 + 120 s SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN >> Gk = feedback(Gh,1) Trang 109 % Gk = Gh/(1+ Gh*H) , voi H(s) = 1 Transfer function: 2 s^3 + 9 s^2 + 15 s ----------------------------------------2 s^5 + 20 s^4 + 72 s^3 + 133 s^2 + 135 s % keát quaû haøm truyeàn caàn tìm. Caâu .2.a. Khaûo saùt heä thoáng duøng bieåu ñoà Bode: Muïc ñích: Töø bieåu ñoà Bode cuûa heä hôû G(s), ta tìm ñöôïc taàn soá caét bieân, ñoä döï tröõ pha, taàn soá caét pha, ñoä döï tröõ bieân cuûa heä thoáng hôû. Döïa vaøo keát quaû tìm ñöôïc ñeå xeùt tính oån ñònh cuûa heä thoáng hoài tieáp aâm ñôn vò vôùi haøm truyeàn voøng hôû laø G(s). Thí nghieäm: Khaûo saùt heä thoáng phaûn hoài aâm ñôn vò coù haøm truyeàn voøng hôû: G(s) = K ( s + 0.2)( s 2 + 8s + 20) a. Vôùi K = 10, veõ bieåu ñoà Bode bieân ñoä vaø pha heä thoáng treân trong khoaûng taàn soá (0.1, 100). HD: Nhaäp leänh veõ bieåu ñoà Bode cuûa G(s) khi K=10 nhö sau: >> TS = 10 ; >> MS = conv([1 0.2],[1 8 20]) ; >> G = tf(TS,MS) ; >> bode(G,{0.1,100}) >> grid on Keát quaû ta coù hình nhö sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 110 CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 111 b. Döïa vaøo bieåu ñoà Bode, tìm taàn soá caét bieân, ñoä döï tröõ pha, taàn soá caét pha, ñoä döï tröõ bieân cuûa heä thoáng HD: Keát quaû caàn tìm nhö hình veõ: Taàn soá caét bieân wc = -0.462 dB, taàn soá caét pha = -179 0C Ñoä döï tröõ bieân GM = 24 dB, ñoä döï tröõ pha φM = 101.2 0 C c. Heä thoáng treân coù oån ñònh khoâng, giaûi thích. HD: Heä thoáng treân coù oån ñònh. Taïi vì Ñoä döï tröõ bieân GM = 24 dB, ñoä döï tröõ pha φM = 101.2 0 C ñeàu döông ( Theo lyù thuyeát ñieàu khieån töï ñoäng). d. Veõ ñaùp öùng quaù ñoä cuûa heä thoáng treân vôùi ñaàu vaøo haøm naác ñôn vò trong khoaûng thôøi gian t = 0 ÷ 10s ñeå minh hoïa keát luaän ôû caâu c HD: Ñeå veõ ñaùp uùng cuûa heä kín ta nhaäp caùc leänh sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 112 >> TS = 10 ; >> MS = conv([1 0.2],[1 8 20]) ; >> G = tf(TS,MS) ; >> Gk = feedback(G,1) Transfer function: 10 --------------------------s^3 + 8.2 s^2 + 21.6 s + 14 >> step(Gk,10) >> grid on >> title('ve dap ung qua do') Keát quaû coù ñöôïc: ta thaáy heä thoáng oån ñònh. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 113 Caâu .2.b. Vôùi K = 400, thöïc hieän laïi caùc yeâu caàu ôû caâu a −> d. a. Vôùi K = 400, veõ bieåu ñoà Bode bieân ñoä vaø pha heä thoáng treân trong khoaûng taàn soá (0.1, 100). HD: Nhaäp leänh veõ bieåu ñoà Bode cuûa G(s) khi K=10 nhö sau: >> TS = 400 ; >> MS = conv([1 0.2],[1 8 20]) ; >> G = tf(TS,MS) ; >> bode(G,{0.1,100}) >> grid on Keát quaû ta coù hình nhö sau: b. Döïa vaøo bieåu ñoà Bode, tìm taàn soá caét bieân, ñoä döï tröõ pha, taàn soá caét pha, ñoä döï tröõ bieân cuûa heä thoáng HD: Keát quaû caàn tìm nhö hình veõ: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 114 Taàn soá caét bieân wc = 0.249 dB, taàn soá caét pha = -179 0C Ñoä döï tröõ bieân GM = - 7.44 dB, ñoä döï tröõ pha φM = 180 − 204 = −24 0 C c. Heä thoáng treân coù oån ñònh khoâng ? giaûi thích. HD: Heä thoáng treân khoâng oån ñònh. Taïi vì Ñoä döï tröõ bieân GM = 7.44 dB döông, coøn ñoä döï tröõ pha φM = −24 0 C < 0 aâm ( Theo lyù thuyeát ñieàu khieån töï ñoäng). d. Veõ ñaùp öùng quaù ñoä cuûa heä thoáng treân vôùi ñaàu vaøo haøm naác ñôn vò trong khoaûng thôøi gian t = 0 ÷ 10s ñeå minh hoïa keát luaän ôû caâu c HD: Ñeå veõ ñaùp öùng cuûa heä kín ta nhaäp caùc leänh sau: >> TS = 400 ; >> MS = conv([1 0.2],[1 8 20]) ; >> G = tf(TS,MS) ; >> Gk = feedback(G,1) Transfer function: 400 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 115 ---------------------------s^3 + 8.2 s^2 + 21.6 s + 404 >> step(Gk,10) >> grid on >> title('ve dap ung qua do') Keát quaû coù ñöôïc: ta thaáy heä thoáng oån ñònh. ----------------------- HEÁT BAØI 1 --------------------- SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 116 BAØI THÍ NGHIEÄM 2 ÖÙNG DUÏNG MATLAB KHAÛO SAÙT HEÄ THOÁNG BAÈNG PHÖÔNG PHAÙP QUYÕ ÑAÏO NGHIEÄM SOÁ Caâu .1. Khaûo saùt heä thoáng duøng phöông phaùp QÑNS: Muïc ñích: Khaûo saùt ñaëc tính cuûa heä thoáng tuyeán tính coù heä soá khueách ñaïi K thay ñoåi, tìm giaù trò giôùi haïn Kgh cuûa K ñeå heä thoáng oån ñònh. Thí nghieäm: Heä thoáng hoài tieáp aâm ñôn vò coù haøm truyeàn voøng hôû: G(s) = K , ( s + 3)( s + 8s + 20) 2 K ≥0 a. Veõ QÑNS cuûa heä thoáng. Döïa vaøo QÑNS, tìm Kgh cuûa heä thoáng, chæ roõ giaù trò naøy treân QÑNS. Löu QÑNS naøy thaønh file *.bmp ñeå vieát baùo caùo. HD: Khi nhaäp haøm truyeàn cho G ta khoâng nhaäp tham soá K trong leänh tf. Duøng leänh grid on ñeå keû löôùi: >> TS = 1 % nhap tu so cua G(s) khong chua K >> MS = conv([1 3],[1 8 20]) % nhap mau so cua G(s) >> G = tf(TS,MS) % nhap ham truyen G(s) >> rlocus(G) % ve quy dao nghiem so >> grid on % ke luoi Gain : giaù trò ñoä lôïi K taïi vò trí nhaáp chuoät (giaù trò K caàn tìm). Pole : cöïc cuûa heä thoáng voøng kín töông öùng vôùi giaù trò K Dampling : heä soá taét ξ Overshoot : ñoä voït loá Frequency : taàn soá dao ñoäng töï nhieân ωn (A) : voøng troøn caùc ñieåm coù cuøng taàn soá dao ñoäng töï nhieân ωn = 4 (B) : ñöôøng thaúng caùc ñieåm coù cuøng heä soá taét ξ = 0.68 (C) : ñöôøng thaúng caùc ñieåm coù cuøng t xl = ξωn 4 = 4 => ξωn = 1 Ñeå tìm Kgh ta nhaáp chuoät vaøo vò trí caét nhau giöõa QÑNS vôùi truïc aûo. Luùc naøy, giaù trò K seõ hieån thò leân nhö treân hình veõ sau: Kgh = Ka = 42.9 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 117 b. Tìm K ñeå heä thoáng coù taàn soá dao ñoäng töï nhieân ωn = 4 HD: Muoán tìm K ñeå heä thoáng coù taàn soá dao ñoäng töï nhieân ωn = 4 , ta nhaáp chuoät vaøo vò trí giao ñieåm cuûa QÑNS vôùi voøng troøn ωn = 4 (voøng troøn (A)). Choïn giao ñieåm gaàn truïc aûo (giao ñieåm M) ñeå giaù trò K naøy laøm heä thoáng coù tính dao ñoäng. Kb = 50.6 c. Tìm K ñeå heä thoáng coù heä soá taét ξ = 0.7 HD: Ñeå heä thoáng coù ξ = 0.7 ta nhaáp chuoät taïi vò trí giao ñieåm (N) cuûa QÑNS vôùi ñöôøng thaúng ξ = 0.7 (ñöôøng thaúng (B)). Ta coù theå choïn gaàn ñuùng ñöôøng thaúng ξ = 0.68 nhö ôû treân hình veõ. Kc = 22.4 d. Tìm K ñeå heä thoáng coù ñoä voït loá POT = 25% HD: ξω Töông töï cho POT = exp(− ) = 25% => ξ = 0.4 1− ξ 2 Kd = 77.9 e. Tìm K ñeå heä thoáng coù thôøi gian xaùc laäp (tieâu chuaån 2%) t xl = 4s HD: t xl = ξωn 4 = 4s => ξωn = 1 .Do ñoù muoán tìm K ñeå heä thoáng coù t xl = 4 ta nhaáp chuoät vaøo vò trí giao ñieåm (P) cuûa QÑNS vôùi ñöôøng thaúng ξωn = 1 (ñöôøng thaúng (C)). Ke = 185 SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 118 Caâu .2. Ñaùnh giaù chaát löôïng cuûa heä thoáng: Muïc ñích: Khaûo saùt ñaëc tính quaù ñoä cuûa heä thoáng vôùi ñaàu vaøo haøm naác ñeå tìm ñoä voït loá vaø sai soá xaùc laäp cuûa heä thoáng. Thí nghieäm: Vôùi heä thoáng nhö ôû phaàn III.1 : a. Vôùi giaù trò K = Kgh tìm ñöôïc ôû treân, veõ ñaùp öùng quaù ñoä cuûa heä thoáng voøng kín vôùi ñaàu vaøo haøm naác ñôn vò. Kieåm chöùng laïi ñaùp öùng ngoõ ra coù dao ñoäng khoâng? HD: >> TS = 1; >> MS = conv([1 3],[1 8 20]); >> G = tf(TS,MS) Transfer function: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 119 1 -----------------------s^3 + 11 s^2 + 44 s + 60 >> Gk= feedback(42.9*G,1) Transfer function: 42.9 --------------------------s^3 + 11 s^2 + 44 s + 102.9 >> step(Gk,5) >> grid on Keát quaû coù ñöôïc: ta thaáy ñaùp öùng ngoõ ra khoâng dao ñoäng. b. Vôùi giaù trò K tìm ñöôïc ôû caâu d. phaàn III.1., veõ ñaùp öùng quaù ñoä cuûa heä thoáng voøng kín vôùi ñaàu vaøo haøm naác ñôn vò trong khoaûng thôøi gian t = 0÷5s. Töø hình veõ, tìm ñoä voït loá vaø sai soá xaùc laäp cuûa heä thoáng. Kieåm chöùng laïi heä thoáng coù POT = 25% khoâng? Löu hình veõ naøy ñeå vieát baùo caùo. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 120 HD: >> TS = 1; >> MS = conv([1 3],[1 8 20]); >> G = tf(TS,MS) Transfer function: 1 -----------------------s^3 + 11 s^2 + 44 s + 60 >> Gk= feedback(77.9*G,1) Transfer function: 77.9 --------------------------s^3 + 11 s^2 + 44 s + 137.9 >> step(Gk,5) >> grid on >> title('ve dap ung qua do he kin voi Kgh = 77.9') Keát quaû coù ñöôïc: POT = 21% < 25% SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 121 c. Vôùi giaù trò K tìm ñöôïc ôû caâu e. phaàn III.1, veõ ñaùp öùng quaù ñoä cuûa heä thoáng voøng kín vôùi ñaàu vaøo haøm naác ñôn vò trong khoaûng thôøi gian t = 0÷5s. Töø hình veõ, tìm ñoä voït loá vaø sai soá xaùc laäp cuûa heä thoáng. Kieåm chöùng laïi heä thoáng coù t xl = 4s khoâng? Löu hình veõ naøy ñeå vieát baùo caùo. HD: >> TS = 1; >> MS = conv([1 3],[1 8 20]); >> G = tf(TS,MS) Transfer function: 1 -----------------------s^3 + 11 s^2 + 44 s + 60 >> Gk= feedback(185*G,1) Transfer function: 185 ------------------------s^3 + 11 s^2 + 44 s + 245 >> step(Gk,5) >> grid on >> title('ve dap ung qua do he kin voi K = 185') Keát quaû coù ñöôïc: Ta thaáy Txl = 3.96 ≈ 4 sec SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 122 d. Veõ 2 ñaùp öùng quaù ñoä ôû caâu b. vaø c. treân cuøng 1 hình veõ. Chuù thích treân hình veõ ñaùp öùng naøo laø töông öùng vôùi K ñoù. Löu hình veõ naøy ñeå vieát baùo caùo. HD: >> TS = 1; >> MS = conv([1 3],[1 8 20]); >> G = tf(TS,MS) Transfer function: % taïo haø truyeàn G 1 -----------------------s^3 + 11 s^2 + 44 s + 60 >> Gk1= feedback(77.9*G,1) % taïo haø truyeàn heä kín Gk1 Transfer function: 77.9 --------------------------s^3 + 11 s^2 + 44 s + 137.9 >> Gk2= feedback(185*G,1) SVTH : VÖÔNG VAÊN HUØNG % taïo haø truyeàn heä kín Gk2 * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 123 Transfer function: 185 ------------------------s^3 + 11 s^2 + 44 s + 245 >> step(Gk1,5) % veõ ñaùp öùng quaù ñoä heä kín 1 >> grid on % taïo keû löôùi >> hold on % giöõ laïi ñoà thò veõ tröôùc >> step(Gk2,5) % veõ ñaùp öùng quaù ñoä heä kín 2 >> title('ve 2 dap ung qua do he kin cua cau b va c') >> legend('Kc = 185','Kb = 77.9') % taïo chuù thích cho ñaùp öùng Keát quaû coù ñöôïc : ------------------ HEÁT BAØI 2 --------------- SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 124 BAØI THÍ NGHIEÄM 3 ÖÙNG DUÏNG SIMULINK MOÂ PHOÛNG VAØ ÑAÙNH GIAÙ CHAÁT LÖÔÏNG HEÄ THOÁNG Caâu .1. Khaûo saùt moâ hình heä thoáng ñieàu khieån nhieät ñoä: Caâu.1.a. Khaûo saùt heä hôû, nhaän daïng heä thoáng theo moâ hình ZieglerNichols: ■ Muïc ñích: Ñaëc tröng cuûa loø nhieät laø khaâu quaùn tính nhieät. Töø khi baét ñaàu cung caáp naêng löôïng ñaàu vaøo cho loø nhieät, nhieät ñoä cuûa loø baét ñaàu taêng leân töø töø. Ñeå nhieät ñoä loø ñaït tôùi giaù trò nhieät ñoä caàn nung thì thöôøng phaûi maát moät khoaûng thôøi gian khaù daøi. Ñaây chính laø ñaëc tính quaùn tính cuûa loø nhieät. Khi tuyeán tính hoaù moâ hình loø nhieät, ta xem haøm truyeàn cuûa loø nhieät nhö laø moät khaâu quaùn tính baäc 2 hoaëc nhö laø moät khaâu quaùn tính baäc nhaát noái tieáp vôùi khaâu treã. Trong baøi thí nghieäm naøy ta xem moâ hình loø nhieät nhö laø moät khaâu quaùn tính baäc 2. Trong phaàn naøy, sinh vieân seõ khaûo saùt khaâu quaùn tính baäc 2 cho tröôùc. Duøng phöông phaùp Ziegler-Nichols nhaän daïng heä thoáng sau ñoù xaây döïng laïi haøm truyeàn. So saùnh giaù trò caùc thoâng soá trong haøm truyeàn vöøa tìm ñöôïc vôùi khaâu quaùn tính baäc 2 cho tröôùc naøy. ■ Thí nghieäm: Duøng SIMULINK xaây döïng moâ hình heä thoáng loø nhieät voøng hôû nhö sau: Step : laø tín hieäu haøm naác theå hieän phaàn traêm coâng suaát cung caáp cho loø nhieät. Giaù trò cuûa haøm naác töø 0 1 töông öùng coâng suaát cung caáp 0% SVTH : VÖÔNG VAÊN HUØNG * 100% CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 125 Transfer Fcn - Transfer Fcn1 : moâ hình loø nhieät tuyeán tính hoùa. Chænh giaù trò cuûa haøm naác baèng 1 ñeå coâng suaát cung caáp cho loø laø 100% ( Step time = 0, Initial time = 0, Final time = 1). Chænh thôøi gian moâ phoûng Stop time = 600s. Moâ phoûng vaø veõ quaù trình quaù ñoä cuûa heä thoáng treân. ■ Höôùng daãn:  Sau khi chaïy xong moâ phoûng, ñeå xem quaù trình quaù ñoä cuûa tín hieäu ta double click vaøo khoái Scope. Cöûa soå Scope hieän ra nhö sau: Vì cöûa soå Scope chæ coù theå xem ñaùp öùng hoaëc in tröïc tieáp ra maùy in nhöng khoâng löu hình veõ thaønh file *.bmp ñöôïc neân ta phaûi chuyeån Scope naøy sang cöûa soå Figure ñeå löu. Thöïc hieän ñieàu naøy baèng caùch nhaáp chuoät vaøo oâ Parameters. Cöûa soå Parameters hieän ra, nhaáp chuoät vaøo trang Data history vaø tieán haønh caøi ñaët caùc thoâng soá nhö hình beân döôùi: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 126 Tieán haønh chaïy moâ phoûng laïi ñeå tín hieäu löu vaøo bieán ScopeData. Chuù yù neáu sau khi khai baùo maø khoâng tieán haønh chaïy moâ phoûng laïi thì tín hieäu seõ khoâng löu vaøo bieán ScopeData maëc duø treân cöûa soå Scope vaãn coù hình veõ. Sau ñoù, vaøo cöûa soå Command Window nhaäp leänh sau: >> plot(ScopeData.time,ScopeData.signals.values) >> grid on SVTH : VÖÔNG VAÊN HUØNG * %ve dap ung %ke luoi CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 127 Luùc naøy cöûa soå Figure hieän ra vôùi hình veõ gioáng nhö hình veõ ôû cöûa soå Scope. Vaøo menu Insert/ Line, Insert/ Text ñeå tieán haønh keõ tieáp tuyeán vaø chuù thích cho hình veõ. Keát quaû cuoái cuøng nhö hình beân döôùi : Vaøo menu [File]Ō[Export] ñeå löu thaønh file *.bmp nhö ôû Baøi thí nghieäm 1. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 128 Caâu .2. Khaûo saùt moâ hình ñieàu khieån nhieät ñoä ON-OFF: ■ Muïc ñích: Khaûo saùt moâ hình ñieàu khieån nhieät ñoä ON-OFF, xeùt aûnh höôûng cuûa khaâu rôle coù treã. ■ Thí nghieäm: Xaây döïng moâ hình heä thoáng ñieàu khieån nhieät ñoä ON-OFF nhö sau: Trong ñoù: ■ Tín hieäu ñaët ñaàu vaøo haøm naác u(t) = 100 (nhieät ñoä ñaët 100oC) ■ Khoái Relay laø boä ñieàu khieån ON-OFF. ■ Giaù trò ñoä lôïi ôû khoái Gain = 50 duøng ñeå khueách ñaïi tín hieäu ngoõ ra khoái Relay ñeå quan saùt cho roõ. Löu yù raèng giaù trò naøy khoâng laøm thay ñoåi caáu truùc cuûa heä thoáng maø chæ hoã trôï vieäc quan saùt tín hieäu. a. Chænh thôøi gian moâ phoûng Stop time = 600s ñeå quan saùt ñöôïc 5 chu kyø ñieàu khieån. Khaûo saùt quaù trình quaù ñoä cuûa heä thoáng vôùi caùc giaù trò cuûa khaâu Relay theo baûng sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 129 CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 130 Vôùi Switch on = +1 , Switch off = -1 ta coù keát quaû sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 131 Vôùi Switch on = +5 , Switch off = -5 : SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 132 Vôùi Switch on = +10 , Switch off = -10, ta coù keát quaû sau : SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 133 Vôùi Switch on = +20 , Switch off = -20, ta coù keát quaû sau : b. Tính sai soá ngoõ ra so vôùi tín hieäu ñaët vaø thôøi gian ñoùng ngaét öùng vôùi caùc tröôøng hôïp cuûa khaâu Relay ôû caâu a theo baûng sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 134 ■ Höôùng daãn: Khi ñieàu khieån ON-OFF , ngoõ ra cuûa heä thoáng coù daïng dao ñoäng quanh giaù trò ñaët, sai soá cuûa noù ñöôïc ñaùnh giaù qua bieân ñoä cuûa sai leäch nhieät ñoä: Δ e = phan hoi - Ñaët khi heä thoáng coù dao ñoäng oån ñònh. Baùo caùo hai giaù trò sai leäch döông Δ e1 (lôùn hôn) vaø aâm - Δ e2 (nhoû hôn) so vôùi tín hieäu ñaët. Giaù trò vuøng treã phaûi löïa choïn sao cho dung hoøa sai soá ngoõ ra vaø chu kyø ñoùng ngaét. Neáu vuøng treã nhoû thì sai soá ngoõ ra nhoû nhöng chu kyø ñoùng ngaét seõ taêng leân laøm giaûm tuoåi thoï boä ñieàu khieån ON-OFF. Vuøng treã +1 / -1 +5 / -5 +10 / -10 +20 / -20 Δe1 − Δe 2 4 12 18 30 2 8 12 21 Chu kyø ñoùng ngaét(s) 50s ≈ 100 s 120s 175s Nhaän xeùt söï aûnh höôûng cuûa vuøng treã ñeán sai soá ngoõ ra vaø chu kyø ñoùng ngaét cuûa khaâu Relay (khoaûng thôøi gian ngoõ ra khaâu Relay thay ñoåi 1 chu kyø). Vuøng treã aøng nhoû thì sai soá xaùc laäp ôû ngoõ ra caøng nhoû. Nhöng chu kyø ñoùng caét seõ nhieàu (vì thôøi gian ñoùng caét cuûa moät chu kyø nhoû). c. Löu quaù trình quaù ñoä cuûa tröôøng hôïp vuøng treã (+5 / -5) ñeå vieát baùo caùo. Treân hình veõ chæ roõ 2 sai soá + Δ e1 / - Δ e2 quanh giaù trò ñaët vaø chu kyø ñoùng ngaét. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 135 CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 136 Caâu 3. Khaûo saùt moâ hình ñieàu khieån nhieät ñoä duøng phöông phaùp ZieglerNichols (ñieàu khieån PID): ■ Muïc ñích: Khaûo saùt moâ hình ñieàu khieån nhieät ñoä duøng boä ñieàu khieån PID, caùc thoâng soá cuûa boä PID ñöôïc tính theo phöông phaùp Ziegler-Nichols. Töø ñoù so saùnh chaát löôïng cuûa heä thoáng ôû 2 boä ñieàu khieån PID vôùi boä ñieàu khieån ON-OFF. ■ Thí nghieäm: Xaây döïng moâ hình heä thoáng ñieàu khieån nhieät ñoä PID nhö sau: Trong ñoù: ■ Tín hieäu ñaët ñaàu vaøo haøm naác u(t) = 100 ( töôïng tröng nhieät ñoä ñaët 100oC) ■ Khaâu baûo hoøa Saturation coù giôùi haïn laø upper limit = 1, lower limit = 0 (töôïng tröng ngoõ ra boä ñieàu khieån coù coâng suaát cung caáp töø 0% ñeán 100%). ■ Boä ñieàu khieån PID coù caùc thoâng soá caàn tính toaùn. ■ Transfer Fcn – Transfer Fcn1 : moâ hình loø nhieät tuyeán tính hoùa. a. Tính giaù trò caùc thoâng soá KP, KI, KD cuûa khaâu PID theo phöông phaùp Ziegler-Nichols töø thoâng soá L vaø T tìm ñöôïc ôû phaàn caâu .1.a ■ Höôùng daãn: Caùch tính caùc thoâng soá KP, KI, KD cuûa khaâu PID theo phöông phaùp ZieglerNichols nhö sau: PID( s) = K P + KI 1.2 * T 1.2 *175 + K D vôùi K P = = = 0,028 s 25 *175 L*K K 0.028 = 5,6.10 −6 K D = 0,5 K P .L = 0,5.0,028.25 = 0,35 KI = P = 2.L 2 * 25 Trong ñoù L = 25, T = 175, K laø caùc giaù trò ñaõ tìm ñöôïc ôû phaàn caâu.1.a. Chuù yù, SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 137 giaù trò K ñaõ cho tröôùc ôû moâ hình haøm truyeàn loø nhieät K = 300. b. Chaïy moâ phoûng vaø löu ñaùp öùng cuûa caùc tín hieäu ôû Scope ñeå vieát baùo caùo. Coù theå choïn laïi Stop time cho phuø hôïp. Trong hình veõ phaûi chuù thích roõ teân caùc tín hieäu. ■ Höôùng daãn: Tín hieäu ñaët ñaàu vaøo haøm naác u(t) = 100 ( töôïng tröng nhieät ñoä ñaët 100oC): Sau ñoù ta nhaäp caùc thoâng soá cho boä ñieàu khieån PID nhö sau: SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 138 Tieáp theo nhaäp khaâu baõo hoøa Saturation coù giôùi haïn laø upper limit = 1, lower limit = 0 Chaïy moâ phoûng ta ñöôïc keát quaû SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 139 c. Nhaän xeùt veà chaát löôïng ngoõ ra ôû 2 phöông phaùp ñieàu khieån PID vaø ON-OFF. Ñoái vôùi phöông phaùp ñieàu khieån ON – OFF thì ñoä voït loá ôû ngoõ ra coù giaûm nhöng coù sai soá xaùc laäp lôùn, vì heä chæ caân baèng ñoäng quanh giaù trò nhieät ñoä ñaët, vaø thay ñoåi thea taûi. SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 140 Ñoái vôùi phöông phaùp ñieàu khieån PID neáu giaù trò cuûa K caøng lôùn thì sai soá seõ giaûm nhöng ngoõ ra se xuaát hieän dao ñoäng vaø ñoä voït loá. ---------------------HEÁT BAØI 3 -------------------- SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 141 BAØI THÍ NGHIEÄM 5 HEÄ THOÁNG ÑIEÀU KHIEÅN NHIEÄT ÑOÄ Phaàn 1. Ñieàu khieån ON -OFF : Muïc ñích : Khaûo saùt heä thoáng ñieàu khieån nhieät ñoä theo nguyeân taéc ñieàu khieån ON - OFF. Thí nghieäm : Môû cöûa loø neáu loø coøn noùng thì duøng quaït ñeå haï nhieät ñoä trong loø xuoáng döôùi 40 oC. Thực hiện quá trình cài đặt thông số cho bộ điều khiển OMRON E5AZ + Phím : cho phép người sử dụng di chuyển qua lại giữa các chế độ : Initial Setting level (chế độ cài đặt thông số bộ điều khiển ) ,Operation Level (chế độ hoạt động ),Adjustment Level ,Advanced Function Setting Level . : di chuyển con trỏ trong 1 chế độ. + phím + 2 phím : tăng gi m các giá trị . Initial Setting Level: Trước tiên ta ph i vô chế độ cài đặt Initial Setting Level : n và giữ phím hơn 5s n phím để lựa chọn thông số , tăng gi m các thông số . Input type :c m biến ngõ vào (mặc định là 5) : do ta sử dụng c m biến có thông số là (K) Temperature Unit :đơn vị đo nhiệt độ là oC SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 142 Sp upper limit :nhiệt độ giới hạn trên 100 oC Sp lower limit :nhiệt độ giới hạn dưới 0 oC Select the control system :hệ thống điều khiển ON/OFF Standard or heating/cooling : kiểu điều khiển Standard Direct/reverse operation : chọn kiểu điều khiển reverse Alarm 1 ÷ 3: chọn 0 , , Operation Level : Để vào chế độ hoạt động Operation Level từ chế độ Initial Setting Level ta n giữ phím hơn 1s . Sau khi vào chế độ hoạt động Operation Level ta n thiết lập nhiệt độ đặt là 70oC. : n phím thống bắt đầu hoạt động. - n - n chọn run chọn stop và n và n cho phép hệ hệ thống tạm dừng . Cho heä thoáng hoaït ñoäng vaø ghi quaù trình taêng nhieät trong 35 phuùt. Ta coù keát quaû ôû Baûng 1 T(min) 0 1 2 3 SVTH : VÖÔNG VAÊN HUØNG 4 5 * 6 7 8 9 10 11 CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN T 0C T(min) T 0C T(min) T 0C 39 12 66 24 71 42 13 73 25 70 48 14 75 26 66 59 72 77 76 74 72 15 16 17 18 19 20 73 71 69 67 64 66 27 28 29 30 31 32 64 66 73 74 71 69 Bảng 1 : Điều khiển ON – OFF Trang 143 69 21 73 33 66 66 22 74 34 64 64 23 73 35 67 QTQÑ nhieät ñoä loø Töø keát quaû ghi theo baûng 1 ta veõ QTQÑ nhieät ñoä loø nhö hình treân. Töø hình veõ QTQÑ: - Xaùc ñònh vuøng treã cuûa khaâu rôle (Vuøng treã cuûa boä ñieàu khieån seõ tính baèng cheânh leäch nhieät ñoä giöõa hai laàn ñoùng ngaét lieân tieáp) Vuøng treã = 8s - Sai soá thöïc teá. Sai soá thöïc teá laø ± 4 0 C Phaàn 2 .Ñieàu khieån tuyeán tính : SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 * BAØI TAÄP MATLAB ĐH CÔNG NGH SÀI GÒN Trang 144 Muïc ñích : Khaûo saùt heä thoáng ñieàu khieån tuyeán tính nhieät ñoä vôùi hieäu chænh PID Thí nghieäm : Môû cöûa loø ñeå haï nhieät ñoä xuoáng döôùi 40oC . Thực hiện các bước tương tự ở chế độ ON/OFF :nhưng ta thay đổi 1 số thông số ôû chế độ Initial Setting Level là . Select the control system :hệ thống điều khiển PID ST : chế độ tự dò tìm ON control period : chu kỳ điều khiển ngõ ra 20 s Các bước còn lại thực hiện tương tự như phần ON/OFF Vaãn giöõ nhieät ñoä ñaët laø 70oC ño nhö phaàn III.1 trong 30 phuùt. Baùo caùo keát quaû ghi theo Baûng 2 vaø veõ QTQÑ nhieät ñoä loø trong 30 phuùt. T(min) 0 T C T(min) T 0C T(min) 0 39 12 70 24 1 43 13 71 25 2 52 14 71 26 3 63 15 70 27 4 69 16 70 28 5 71 17 70 29 6 71 18 70 30 7 70 19 70 31 8 70 20 70 32 9 69 21 70 33 10 69 22 70 34 11 70 23 70 35 T 0C Bảng 2 : Điều khiển tuyến tính (PID) SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN * BAØI TAÄP MATLAB Trang 145 QTQÑ nhieät ñoä loø Keát quaû ghi theo baûng 2 vaø veõ QTQÑ nhieät ñoä loø nhö hình treân. Töø hình veõ QTQÑ: - Ñaùnh giaù thời gian quaù ñoä : thôøi gian quaù ñoä - Đoä voït loá : POT = C max − C xl 71 − 70 x100 = x100 = 1,43% C xl 70 - Sai soá xaùc laäp : exl = 0 - Nhaän xeùt vaø so saùnh veà chaát löôïng ñieàu khieån cuûa boä ñieàu khieån tuyeán tính (PID) so vôùi boä ñieàu khieån ON-OFF : Vôùi ñieàu khieån ON – OFF sai soá xaùc laäp lôùn do heä chæ caân baèng ñoäng quanh nhieät ñoä ñaët vaø thay ñoåi theo taûi. Coøn vôùi ñieàu khieån PID: tín hieäu ñieàu khieån theo daïng ñieàu khieån ñoä roäng xung, theo phöông phaùp vi tích phaân tæ leä do ñoù maø ngoõ ra haàu nhö khoâng coù sai soá xaùc laäp. ---------------------- HEÁT BAØI 5 -----------------------------SVTH : VÖÔNG VAÊN HUØNG * CLASS : ÑÑT307.3 ĐH CÔNG NGH SÀI GÒN SVTH : VÖÔNG VAÊN HUØNG * BAØI TAÄP MATLAB * Trang 146 CLASS : ÑÑT307.3