Giáo trình Matlab v5.3 - Chương 1: Cơ sở Matlab
Matlablàmột ngôn ngữ lập trình thực hành bậc cao đ-ợc sử dụng để giải các bài
toán về kỹ thuật.Matlab tích hợp đ-ợc việc tính toán, thể hiện kết quả, cho phép lập trình,
giao diện làm việc rất dễ dàng cho ng-ời sử dụng. Dữ liệu cùng với th-viện đ-ợc lập
trình sẵn cho phép ng-ời sử dụng có thể có đ-ợc những ứng dụng sau đây.
• Sử dụng các hàm có sẵn trong th-viện, các phép tính toán học thông th-ờng
• Cho phép lập trình tạo ra những ứng dụng mới.
• Cho phép mô phỏng các mô hình thực tế.
• Phân tích, khảo sát vàhiển thị dữ liệu.
• Với phần mềm đồ hoạ cực mạnh
• Cho phép phát triển,giao tiếp với một số phần mềm khác nh-C++, Fortran.
c nhân với một m trạn ones(size(ma trận so sánh)) sao cho nó có kích th−ớc giống với ma trận cần so sánh rồi mới so sánh . Ví dụ: X=5; X>=[1 2 3 ; 4 5 6; 7 8 9] Ù X=5*ones(3,3); X>[1 2 3 ; 4 5 6; 7 8 9] Kết quả trả về : ans= 1 1 1 1 1 0 0 0 0 1.9.2 Các toán tử logic (Logical Operator & | ~) Cấu trúc: Toán tử logic ý nghĩa & Vμ vd A&B | Hoặc vd A|B ~ Đảo vd ~A Các ký hiệu & , | ,~ lμ các toán tử logic vμ hoặc đảo. Chúng thực hiện trên từng phần tử của của các mảng so sánh( toán tử logic cho phép thực hiện trên nhiều mảng với yêu cầu lμ các mảng phải có cùng kích th−ớc), kết quả trả về lμ một ma trận có cùng kích th−ớc >>X=5; >>X >=[1 2 3 ; 4 5 6; 7 8 9] ans 1 1 1 1 1 0 >>Chuoi1= ‘Pham Duc Dai’; >>Chuoi2=’Vu van van’; >>ss=strcmp(Chuoi1, Chuoi2); ss=0 Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 17 với các ma trạn so sánh trên. Các toán tử logic th−ờng dùng để liên kết các biểu thức quan hệ. Bảng chân lý: Đầu vμo And Or Xor Not A B A&B A|B xor(A,B) ~A 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 Mức −u tiên cao nhất đối với toán tử logic đảo( not ,~) , hai toán tử and vμ | có cùng mức −u tiên , trong một biểu thức toán học thì chúng đ−ợc thực hiện theo thứ tự từ trái sang phải. Ta có thể sử dụng các toán tử ‘and’ , ‘or’ ,’not’ ⇔ & , | , ~ nh− bảng sau: A&B and(A,B) A|B or(A,B) ~A not(A) Chú ý trong các biểu thức sử dụng các toán tử locgic thì ta nên dùng dấu ngoặc để xác định rõ rμng ,vμ đảm bảo tính t−ơng thích trong các phiên bản mới của Matlab Tổng kết: • Các phép tính số học sẽ đ−ợc thực hiện tr−ớc khi thực hiện các biểu thức logic. • Khi tính toán ta nên thêm dấu ngoặc đơn để lμm biểu thức trở nên sáng sủa hơn. • Gặp những biểu thức phức tạp sẽ sử lý các tính toán số học tr−ớc, sau đó các toán tử logic đ−ợc xem xét từ trái qua phải . 1.10 Các câu lệnh điều kiện, rẽ nhánh 1.10.1 Câu lệnh điều kiện if. Cấu trúc % Đây lμ cấu trúc đơn giản nhất. if expression Statements; end; % Cấu trúc sử dụng lệnh elseif ,else vμ if đ−ợc viết liền if expression1 Statements; elseif expression2 Statement; else Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 18 Statements; end Biểu thức expression bao gồm các toán tử quan hệ ví dụ nh− (count<limit) hoặc (height- offset)>0 ), Ngoμi ra nó còn kết hợp với các toán tử logic để liên kết các biểu thức quan hệ. Ví dụ 1: if (count0) Ví dụ 2: Cho khoảng [a b], viết ch−ơng trình chia khoảng nμy thμnh n khoảng bằng nhau với n cho tr−ớc. Ví dụ 3: Ch−ơng trình xác định dấu của số nhập vμo : Nguyên tắc lμm việc của lệnh if nh− sau :Khi biểu thức expression đúng thì câu lệnh ngay sau lệnh if đ−ợc thực hiện nếu sai câu lệnh đó sẽ đ−ợc bỏ qua đến lệnh elseif Một biểu thức só sánh lμ đúng nếu tất cả các phần tử so sánh của hai mảng (hoặc hai ma trận) trả về gía trị 1 Ví dụ: A=[ 1 0; 2 3]; B=[1 1; 3 4]; Thì : + A<B lμ sai vì A(1,1) không nhỏ hơn B(1,1); + A<(B+1) lμ đúng bởi vì không phần tử nμo trong A lớn hơn phần tử trong B t−ơng ứng function v= lnearspace(a,b,n) if n<2 error(‘Ban nhap sai, it nhat n phai lon hon 1’); end; h=(b-a)/(n-1); v=a:h:b; -------------------------------------------------------------------------- Thực thi ch−ơng trình trên trong Command window nh− sau: >> v=Soan1(5 1 5) function s= sign(x) if x>0 s=1; % so duong elseif x<0 s=-1; % so am else s=0; % so =0 Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 19 % Cấu trúc khi sử dụng lệnh else if if expression1 statements1; else if expression2 statements2; end end Ta thấy trong cấu trúc trên thì có hai lệnh if riêng biệt cho nên phải có hai từ kết thúc lμ end. Bμi tập ví dụ: Nhập vμo bμn phím điểm của một học sinh rồi in ra đánh giá : 1.10.2 Vòng lặp for Cấu trúc: for i= imin :Δi: imax statements; end Δi : Lμ b−ớc nhảy của vòng lặp for, giá trị mặc định lμ =1; Ví dụ: Tính tổng s= 1+2^p +3^p+ ... n^p ; ( p lμ số mũ ) Diem= input(‘nhap diem vao=’); if ( Diem< 5) fprintf(‘Hoc luc yeu’); elseif( Diem>=5)&(Diem<7) fprintf(‘Hoc luc trung binh’); elseif(Diem>=7)&(Diem<8) fprintf(‘Hoc luc khá’); else fprintf(‘Hoc luc gioi’); end; function s= Sump(n , p) s=0; for i=1:n ; s=s+i^p ;end; Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 20 Hai ch−ơng trình sau đây lμ giống nhau 1.10.3 Vòng lặp while Cấu trúc: while( bieu_thuc_logic) statements; end; Tr−ớc hết vòng lặp kiểm tra xem nếu biểu thức logic đúng thì thực hiện các câu lệnh statements. Ví dụ: 1.10.4 Lệnh ngắt break , error, return • Lệnh break :Tác dụng điều khiển ch−ơng trình nhảy ra khỏi vòng lặp for hay while gần nó nhất. Ví dụ:Nhập một số d−ơng nếu âm thì nhập lại 1.10.5 Lệnh error vμ lệnh return - Lệnh error: Dùng để thông báo lỗi , hiển thị cho ng−ời lập trình biết đó lμ lỗi gì ? Ví dụ: error(‘error message’); hiển thị thông điệp lỗi khi thực hiện câu lệnh nμy. for i=1:100; y(i)=sin(i); end; x=1:100; y=sin(x); ⇔ n=input(‘Nhap n=’); s=0; i=0; while( i<n) s=s+i; end; while 1 n= input(‘nhap n=’); while(n<0) %Vong lap while2 break; %Thoat khoi vong lap while2 end if n>0 break; %Thoat khoi vongwhile chinh end end a=input(‘Nhap a=’); b=input(‘Nhap b=’); % Thuc hien a: b if b==0 error(‘divide by zeros’); Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 21 Khi thực thi ch−ơng trình trên ( nhập b=0) thì xuất hiện dòng chữ đỏ Nh− sau: ??? Error using ==> soan1 divide by zeros Chú ý rằng soan1 lμ tên file l−u ch−ơng trình trên - Lệnh return: Th−ờng đ−ợc sử dụng trong các hμm của MATLAB. Lệnh return sẽ cho phép quay trở về thực thi những lệnh nằm trong tác dụng của lệnh return. 1.10.6 Biến toμn cục Biến toμn cục đ−ợc dùng trong phạm vi toμn bộ các ch−ơng trình, nếu các ch−ơng trình đó khai báo biến toμn cục đó. Cấu trúc: global x y z % khai báo ba biến toμn cục x y z Ví dụ đơn giản sau: %Ch−ơng trình con tính hμm Thực thi ch−ơng trình: >> x=2,y=3,z=4; >> [u,v]=Main(x,y,z); 1.10.6 Định dạng dữ liệu ra Các phép tính trong MATLAB đ−ợc thực hiện với độ chính xác cao, ta có thể định dạng cho các số xuất ra mμn hình tuỳ từng yêu cầu cụ thể: Ví dụ số a= 4/3 với • format short (đây lμ chế độ mặc định gồm 4 số sau dấu phẩy) a=1.3333 • format short e a= 1.3333e+00 function[ u,v]=Main(x,y) global a b; Tinhham(x,y,z); u=a;v=b; function Tinhham(x,y,z) global a b; a=x^2 +y^2+ z^2; b=x^3 +y^3+ ^ Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 22 • format long a=1.3333333333333 • format lang e a=1.3333333333333e+000 Ngoμi cách nμy ra ta định dạng dữ liệu bằng thanh tool công cụ trên mμn hình Ví dụ: Gõ các lệnh sau trong cửa sổ CommandWindow >>format long >>a=4/3 a= 1.3333333333333 1.10.7 Một số hμm toán học thông th−ờng hay sử dụng Tên hμm ý nghĩa Sin Hμm sin Cos Hμm cos Tan Hμm tan Asin Hμm acsin Acos Hμm accos Atan Hμm tính arctg Angle Lấy góc pha Fix Lμm tròn h−ớng 0 Floor Lμm tròn h−ờng -∞ Exp Hμm e mũ Ceil Lμm tròn h−ớng -∞ Log Logarit cơ số e log10 Logarit cơ số 10 sqrt(x) Căn bậc hai 1.11 Các hằng số đ−ợc sử dụng trong Matlab • Ký tự inf thay thế cho ∞ trong toán học Inf : lμ số vô cùng lớn mμ Matlab không thể hiện đ−ợc ví dụ: >> 5/0 ans = inf • Ký tự NaN thay thế cho một số không xác định Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 23 ví dụ: >> 0/0 ans= NaN • Ký tự pi thể hiện lμ số π =3.14159.. • Ký tự eps 1.12 Số phức trong Matlab Sử dụng i vμ j để thể hiện phần ảo với i= j= sqrt(-1) Ví dụ: >> 5+6i ans = 5.0000 + 6.0000i >> 5+6j ans = 5.0000 + 6.0000i Chú ý khi lμm với số phức cần phân biệt : y= 7/2*i vμ x= 7/2i cho hai kết quả khác nhau >> y= 7/2*i y = 3.5*i >> x=7/2i x= -3.5i Ví dụ các phép tính về số phức: >> s=3+7i >>w=5-9i >>w+s >>w-s >>w*s >>w/s 1.13 Các lệnh thoát khỏi ch−ơng trình,liệt kê các biến, xoá biến . • Lệnh exit : Tác dụng thoát khỏi ch−ơng trình . • Lệnh clc (clear command) xoá tất cả các lệnh trong cửa sổ CommandWindow • Lệnh clear xoá toμn bộ các biến trong bộ nhớ hiện thời . • Lệnh clear Xoá danh sách biến đ−ợc liệt kê ra. • Lệnh whos cho biết tất cả các biến hiện thời, kích th−ớc ô nhớ biến đó. Tungvn40@yahoo.com CM Soft 70 NCT F2 Q10 Trang 24 • Lệnh quit cũng giống nh− lệnh exit • Các phím mũi tên lên xuống (trên bμn phím) đ−ợc dùng để gọi lại các lệnh đã thực hiện tr−ớc đó. Câu hỏi& Bμi tập cuối ch−ơng Nêu đặc điểm của các cửa sổ ( CommandWindow, history .) 1. Sử dụng Lệnh trực tiếp từ cửa sổ command window vμ gián tiếp từ các file 2. Các câu lệnh điều kiện , vòng lặp 3. L−u vμ lấy dữ liệu cho một hoặc nhiều biến. Bμi tập1 : Giải hệ ph−ơng trình bậc nhất dùng dòng nhắc gán giá trị biên nhập các hệ số a,b,c,d,m,n hệ cho nh− sau: ax +by=m cx+dy=n Bμi tập 2: Sinh viên vẽ các hμm sau a. Vẽ đặc tính điode với quan hệ dòng điện vμ điện áp trên điode nh− sau i=I0*(exp(40*v)-1)(A); I0=1.E-6; vector v=[-10:0.005:0.8] . Sinh viên thực hiện theo hai cách viết trực tiếp trong CommadWindow vμ viết hμm trong M-file. b. Vẽ các hμm cơ bản sin(x) ,cos(x) ,tan(x)... dùng lệnh fplot . c. Vẽ hμm y= sin(x)/x , y=x, y=sin(x) trên cùng một đồ thị . Bμi tập3 : L−u tất cả các biến bạn đã dùng trong quá trình thực hμnh vμo file riêng của mình, để lần sau lấy ra dùng lại. Bμi 4:Lập ch−ơng trình dạng hμm function để giải ph−ơng trình bậc hai Bμi 5:Lập hμm tính hμm truyền kín các sơ đồ hệ thống điều khiển trong sách lý thuyết điều khiển tự động Bμi 5:Lập hμm function [Q, R]=divide (a,b) tìm th−ơng vμ số chia hai số a vμ b
File đính kèm:
- Giáo trình Matlab v5.3 - Chương 1_Cơ sở Matlab.pdf