Phép toán và vector ma trậnCác phép toán tử so sánhVectorMa trậnCác toán tử so sánh:Trong Matlab các toán tử so sánh được biểu diễn như sau: Toán tử Ý nghĩa < Nhỏ hơn > Lớn hơn <= Nhỏ hơn hoặc bằng >= Lớn hơn hoặc bằng ~= Khác nhau == Trùng nhauLưu ý:Khi hai mảng có cùng kích thước được so sánh với nhau thì toán tử so sánh sẽ thực hiện so sánh từng phần tử với nhau.Các toán tử <, >, <=, and >= chỉ so sánh phần thực của các toán hạng với nhau.Các toán tử == and = sẽ so sánh cả phần ∼thực và ảo của hai toán hạng.Kết quả so sánh cho ta 1 nếu phép so sánh là TRUE và ngược lại 0 nếu FALSE.Ví dụ:>>1==2• ans =• 0>> 3>1• ans = • 1>> 4<=10• ans =• 1>> 3~=7• ans= • 1So sánh 2 vector hay 2 ma trậnTrong trường hợp này thì toán tử so sánh thực hiện cho ta kết quả so sánh của từng phần tử tương ứng với hai vector hay hai ma trận với nhau:Ví dụ:•>> A=[1 3 4; 2 8 7; 6 9 5]• A = 1 3 4 2 8 7 6 9 5>> B=[3 1 4; 7 8 2; 6 5 9] B = 3 1 4 7 8 2 6 5 9>> A==B ans = 0 0 1 0 1 0 1 0 0>> A =B∼ ans = 1 1 0 1 0 1 0 1 1>> A >= B ans = 0 1 1 0 1 1 1 1 0 >> A < BCác toán tử LogicLưu ý: Các toán tử này làm việc với từng phần tử của Mảng, với 0 biểu diễn FALSE còn 1 hay bất kỳ phần tử khác 0 nào biểu diễn TRUE.Các toán tử Logic trả lại 1 mảng logic bất kỳ với các phần tử 0 (FALSE) 1 (TRUE). Ký hiệu Toán tử Logic& AND| OR~ NOTCác ký hiệu trên cũng có thể thay thế bằng cách sử dụng các hàm MatLab ở dạng and(A,B), or(A,B), hay not(A,B). Hoặc tuyệt đối được biểu diễn như sau xor(A,B). Trình tự ưu tiên toán tử logic là NOT, OR, và AND.Phép toán sử dụng toán tử AND(&) cho kết quả TRUE nếu cả hai toán hạng đều TRUE về mặt logic. Nói theo thuật ngữ số, thì phép toán AND cho ta kết quả TRUE nếu cả hai toán hạng đều khác 0.Ví dụ: >> a=[3 5 0 4 0] a = 3 5 0 4 0>> b=[3 1 0 0 2] b = 3 1 0 0 2>> a & b ans = 1 1 0 0 0Các số 1 chỉ ra các phần tử tương ứng khác không của cả a và b.Phép toán OR (|) cho kết quả TRUE nếu một toán hạng hoặc cả hai toán hạng là TRUE về mặt Logic. Nói theo thuật ngữ số thì phép toán OR chỉ cho kết quả FALSE khi cả hai toán hạng đều bằng không.Ví dụ: >> a | b ans = 1 1 0 1 1Phép toán NOT (~) thực hiện phép đảo toán hạng, cho kết quả FALSE nếu toán hạng là TRUE và cho kết quả TRUE nếu toán hạng là FALSE. Theo thuật ngữ số thì các toán hạng bằng không sẽ bằng một và tất cả các toán hạng khác đều bằng không.Ví dụ: >> a∼ ans = 0 0 1 0 1Ma trận (matrix)Ma trận là một mảng hình chữ nhật các con sốMa trận gồm các dòng (row) và các cột (column).Các dòng hay cột chung gọi là Vector.Nhập ma trậnNhập trực tiếp danh sách từ phần tửPhát sinh ma trận bằng các hàm có sẵnNhập từ FileTạo ma trận bằng các file .mA = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1Đường chéo của ma trận>>A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 >>sum(A) ans= 34 34 34 34>> diag(A) ans = 16 10 7 1 5Trích một phần tửPhần tử Aij được trích bằng biểu thức A(I,j)A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1A(4,2) là phần tử ở dòng 4 cột 2, tức là phần tử 15.Phép trích chỉ có một chỉ số sẽ theo thứ tự duyệt theo cột. (xem ma trận là một vector cột dài)A(8) là phần tử thứ 8 duyệt theo cột từ trái qua phải, từ trên xuống dưới.Chỉ số vượt khỏi kích thước ma trận>> t = A(4,5) “Index exceeds matrix dimensions.”Việc truy xuất phần tử vi phạm kích thước ma trậnNằm bên phải phép gán>> X = A; >> X(4,5) = 17 X = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17Mở rộng ma trậnNằm bên trái phép gánDấu hai chấm “:” (colon)Dấu “:” là một trong những phép toán quan trọng nhất trong MatLab.Ví dụ: • 1:10 là 1 vector dòng gồm các số nguyên từ 1 đến • 10 • 1 2 3 4 5 6 7 8 9 10Để tạo bước tăng/giảm khác 1• 100:-7:50• 100 93 86 79 72 65 58 51• 0:pi/4:pi• 0.7854 1.5708 2.3562 3.1416Dùng dấu hai chấm trong chỉ sốVí dụ:•A(1:k,j) gồm k số đầu tiên của cột thứ j của ma trận A.•Sum(A(1:4,4)) tính tổng 4 số đầu tiên của cột thứ 4 của ma trận A.Dấu hai chấm đứng một mình sẽ chỉ toàn bộ phần tử của dòng hoặc cột.Từ khóa “end” chỉ chỉ số cuối cùng của dòng hoặc cộtVí dụ: •A(:,end) chỉ toàn bộ phần tử ở cột cuối cùng Trích nhiều phần tửSử dụng dấu “[,]” để liệt kê vị trí cần tríchVí dụ: • A = [2 4 3; 8 6 7], x = [9 4 2 1]• A([2,1],2) [6 4]’ , x([2,4]) 4 1•Có thể sử dụng dấu “.” để trích dãy các phần tử Ví dụ:•A(2,1:3) 8 6 7 , x(3:-1:1) 2 4 9Phát sinh ma trận bằng hàm sẵn cóMa trận 0 zeros(m,n)Ma trận 1 ones(m,n)Ma trận đơn vị eye(n)Ma trận đường chéo diag([a,b,c,…])Ma trận phương magic(n)Ma trận các số thực ngẫu nhiên từ 0 đến 1rand(m,n)Z = zeros(2,4) F = 5*ones(2,3) Z = F = 0 0 0 0 5 5 5 0 0 0 0 5 5 5Nhập ma trận bằng hàm loudGiả sử ta có 1 file magik.dat có nội dung như sau (các số cách nhau bởi khoảng trắng) 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0Tạo ma trận bằng file.mFile .m là một file văn bản ghi các dòng lệnh MatLabCó thể soạn thảo MatLab Editor hoặc bất kỳ trình soạn thảo văn bản nào.Lưu file có đuôi .mGõ tên file để thực thi nội dung các dòng lệnh trong file.Ví dụ: Tạo một file có nội dung như sau:A=[ 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0];Lưu với tên magik.m. Dòng lệnh >>magik Sẽ đọc file và tạo biến A là ma trận như trên.Ghép (concatenation) hai ma trậnA 1 2 34 5 6Thêm cột Thêm dòngB 10 1211 13D = [A B] E = [A; C]C 7 8 99 7 88 9 71 2 3 10 124 5 6 11 131 2 34 5 67 8 99 7 88 9 7Xóa dòng, xóa cộtX(: , 2) = [] X = 16 2 13 5 11 8 9 7 12 4 14 1A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 X = A;
Chia trái\Chia trái.\Luỹ thừa.^Luỹ thừa..^Phép gán.=Phép gán.=Thứ tự ưu tiên các phép toánNgoặc đơnLuỹ thừaNhân, chiaCộng, trừ2.1.2 Các phép toán quan hệCác phép toán quan hệ bao gồm- Nhỏ hơn: < - Nhỏ hơn hoặc bằng: <= |