Tên đặt bên trái dấu bằng , bên phải dấu bằng là các phần tử của ma trận.. - Các phần tử trong ma trận đợc cách nhau bởi ký tự trống hoặc dấu phẩy ,.. - Nếu dùng dấu ; câu lệnh đợc thực
Trang 1chơng 4
Ma trận - các phép toán về ma trận.
4.1 Khái niệm:
- Trong MATLAB dữ liệu để đa vào xử lý dới dạng ma trận
- Ma trận A có n hàng, m cột đợc gọi là ma trận cỡ n m Đợc ký hiệu An m
- Phần tử aij của ma trận An m là phần tử nằm ở hàng thứ i, cột j
- Ma trận đơn ( số đơn lẻ ) là ma trận 1 hàng 1 cột
- Ma trận hàng ( 1 m ) số liệu đợc bố trí trên một hàng
a11 a12 a13 a1m
- Ma trận cột ( n 1) số liệu đợc bố trí trên 1 cột
a11
a21
a31
an1
4.1.1 Các qui định để định nghĩa một ma trận:
- Tên ma trận có thể gồm 31 ký tự Bắt đầu phải bằng chữ cái sau đó có thể là
số, chữ cái, các ký tự đặc biệt Tên đặt bên trái dấu bằng , bên phải dấu bằng
là các phần tử của ma trận
- Bao quanh các phần tử của ma trận bằng dấu ngoặc vuông
- Các phần tử trong ma trận đợc cách nhau bởi ký tự trống hoặc dấu phẩy ( , )
- Kết thúc một hàng trong ma trận bởi dấu ( ; )
4.1.2 Các cách để nhập một ma trận:
- Liệt kê trực tiếp:VD >> A =[1 2 3; 4 5 6 ; 7 8 9]
>> B =[1 2 3;
4 5 6 ;
7 8 9]
- Nhập thông qua lệnh Dùng lệnh input
>> input('Nhap gia tri cho ma tran C = ')
Nhap gia tri cho ma tran C = [1 3 4;4 5 7;7 5 8]
ans =
1 3 4
Trang 24 5 7
7 5 8
Chú ý khi kết thúc một câu lệnh có thể dùng dấu (; ) hoặc không dùng dấu ( ;).
- Nếu dùng dấu (;) câu lệnh đợc thực hiện nhng kết quả không hiện ra màn hình.
- Nếu không dùng dấu ( ; ) câu lệnh đợc thực hiện và kết quả đợc hiện ra màn hình.
- Trong cả 2 trờng hợp trên sau khi câu lệnh đợc thực hiện kết quả đều đợc
lu vào trong bộ nhớ và có thể sử dụng cho các câu lệnh tiếp theo.
Vd
>>a = [1 2 3;3 2 4;4 5 1];
>> b = [1 2 3;4 5 6;7 8 9]
b =
1 2 3
4 5 6
7 8 9
Cả 2 ma trận A, B đều đợc lu vào trong bộ nhớ và có thể đợc sử dụng cho những câu lệnh tiếp theo
>> c = a*b
c =
30 36 42
39 48 57
31 41 51
4.1.3 Hiển thị lại ma trận:
- Để hiển thị lại ma trận ta gõ tên ma trận sau đó enter
VD >> c
c =
30 36 42
39 48 57
31 41 51
- Để hiển thị nội dung của ma trận hoặc lời thông báo (trong dấu nháy đơn) ta dùng lệnh: disp
VD >> disp (c)
c =
Trang 330 36 42
39 48 57
31 41 51
>> disp('hiển thị lời thông báo này')
hiển thị lời thông báo này
Chú ý:
- Các phần tử trong ma trận có thể là các số phức:
VD >> a=[1+3i 2+2i;3+i 1+i]
a = 1.0000 + 3.0000i 2.0000 + 2.0000i 3.0000 + 1.0000i 1.0000 + 1.0000i
- Các phần tử trong ma trận có thể là các ký tự Nhng trớc tiên ta phải khai báo các phần
tử bằng lệnh syms
VD >> syms sinx cosx a
>> b = [ sinx cosx; a cosx]
b =
[ sinx, cosx]
[ a, cosx]
>> c=[a sinx; a a]
c =
[ a, sinx]
[ a, a]
4.2 Xử lý trong ma trận:
4.2.1 Tạo véctơ từ ma trận:
Công thức tổng quát: Biến = giới hạn đầu : bớc chạy : gới hạn cuối
Giới hạn đầu, giới hạn cuối, bớc chạy: là các số thực
Bớc chạy có thể dơng hoặc âm
VD Tạo 1 vectơ t chạy từ 0 đến 0.6 với bớc chạy tiến là 0.1
>> t=0: 0.1:0.6
t =
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
VD: Tạo 1 vectơ t chạy từ 0.6 đến 0 với bớc chạy lùi là 0.1
>>t=0.6:-0.1:0
t =
0.6000 0.5000 0.4000 0.3000 0.2000 0.1000 0
Chú ý : Trong trờng hợp giới hạn trên, gới hạn dới là các số nguyên và bớc chạy bằng 1
thì ta không cần đa bớc chạy vào trong biểu thức
Trang 4VD >> C = 1:5
C =
4.2.2 Gọi các phần tử trong ma trận.
MATLAB cho phép ta xử lý đến từng phần tử của ma trận Để truy cập đến từng phần tử của ma trận ta phải gọi đợc chúng thông qua chỉ số của từng phần tử
Tên của ma trận( Chỉ số hàng, chỉ số cột)
VD:
>> A = [1:3; 4:6; 7:9]
A =
>> B = A(1,1)
B =
1
>> A(3,3) = A(2,2) + B
A =
Chú ý: Trong trờng hợp ta muốn gọi tất cả các hàng hoặc tất cả các cột ta có thể dùng toán
tử hai chấm ( : )
VD:
>> A = [1:3; 4:6; 7:9]
A =
>> B = A(2,:)
B =
>>C = A(:,2)
C = 2 5 8
4.2.3 Gọi 1 ma trận con từ một ma trận lớn.
VD
Trang 5>> A = [1:3; 4:6; 7:9]
A =
>> B = A ( 2:3,1:2 )
B =
5
>> c =[a(1,1) a(3,3); a(2,3) a(3,1)]
c =
1 9
6 7
4.3 Các ma trận đặc biệt:
4.3.1 Ma trận zeros Tất cả các phần tử trong ma trận đều bằng 0.
VD
>> C = zeros (2,3)
C =
>> d = zeros(3)
d =
4.3.2 Ma trận ones Tất cả các phần tử trong ma trận đều bằng 1
VD
>> C = ones (2,3)
C =
>> d = ones(3)
d =
4.3.3 Ma trận ma phơng Magic: Tổng tất cả giá trị các phần tử trên hàng = Tổng tất cả
giá trị các phần tử trên cột = Tổng tất cả giá trị các phần tử trên đờng chéo của ma trận Vd
Trang 6>> A = Magic (3)
A=
4.3.4 Ma trận eye Tất cả các phần tử trên đờng chéo có giá trị 1, các phần tử khác có giá
trị 0
VD
>> B = eye (3)
B =
4.4 Các phép toán vector:
4.4.1 Các phần tử là các số thực:
>>a=[1 1 2;2 1 1]
a =
1 1 2
2 1 1
>> b=[1 2 2; 1 1 1]
b =
1 2 2
1 1 1
>> c=a.*b
c =
1 2 4
2 1 1
>> d=a./b
d =
1.0000 0.5000 1.0000
2.0000 1.0000 1.0000
Trang 7>> e=a.\b
e =
1.0000 2.0000 1.0000
0.5000 1.0000 1.0000
>> f=a.^b
f =
1 1 4
2 1 1
4.4.2 C¸c phÇn tö lµ c¸c sè phøc.
>>a=[1+i 2+3i;3-4i 1+3i]
a =
1.0000 + 1.0000i 2.0000 + 3.0000i
3.0000 - 4.0000i 1.0000 + 3.0000i
>> b=[2+i 2+2i;1-4i 3+3i]
b =
2.0000 + 1.0000i 2.0000 + 2.0000i
1.0000 - 4.0000i 3.0000 + 3.0000i
>> c=a.*b
c =
1.0000 + 3.0000i -2.0000 +10.0000i
-13.0000 -16.0000i -6.0000 +12.0000i
4.4.3 C¸c phÇn tö lµ c¸c tham sè:
>> syms a b c
>>A=[a b; b c]
A =
[ a, b]
[ b, c]
>> B=A
B =
[ a, b]
[ b, c]
>> C=A.*B
C =
[ a^2, b^2]
[ b^2, c^2]
4.5 C¸c phÐp to¸n vÒ ma trËn:
4.5.1 PhÐp chuyÓn vÞ:
Trang 8Phép chuyển đổi véctơ hàng thành véctơ cột gọi là phép chuyển vị Thực hiện phép chuyển vị bằng toán tử dấu nháy đơn ( ‘ )
VD
>> A = [1:3; 4:6; 7:9]
A =
>> B = A’
B =
Ma trận B đợc gọi là ma trận chuyển vị của ma trận A
4.5.2 Phép cộng - trừ ma trận.( + , - )
Phép cộng và trừ ma trận đợc thực hiện với các ma trận có cùng kích cỡ
Cij = Aij + Bij
Dij = Aịj - Bij
>> A = [1:3; 4:6; 7:9]
A =
>> B = A’
B =
>> C = A + B
C =
10 14 18
4.5.3 Phép nhân, chia ma trận:
C = A*B
Để thực hiện đợc phép nhân trên thì số cột của ma trận A phải bằng số hàng của ma trận B
Trang 9Các phần tử trong ma trận C đợc tính nh sau:
VD các phần tử trong ma trận là các số thực.
>> A = [1 2 1; 1 0 1]
A =
>> B = [1 0 2; 2 1 1; 1 1 1]
B =
>> C = A * B
C =
VD các phần tử trong ma trận là các số phức.
>> a=[1+2i 2+2i;1+3i 2+2i]
a =
1.0000 + 2.0000i 2.0000 + 2.0000i
1.0000 + 3.0000i 2.0000 + 2.0000i
>> b=[1+i 2+i;1+3i 2+i]
b =
1.0000 + 1.0000i 2.0000 + 1.0000i
1.0000 + 3.0000i 2.0000 + 1.0000i
>> c=a*b
c =
-5.0000 +11.0000i 2.0000 +11.0000i
-6.0000 +12.0000i 1.0000 +13.0000i
VD các phần tử trong ma trận là các tham số
>> syms a b c
>>d=[2*a b c; a b c; 0 0 a]
d =
[ 2*a, b, c]
[ a, b, c]
n 1 k
kj ik
C
Trang 10[ 0, 0, a]
>> e=[a b c; 2*a 2*b^2 c ; a 0 b]
e =
[ a, b, c]
[ 2*a, 2*b^2, c]
[ a, 0, b]
>> f=d*e
f =
[ 2*a^2+2*b*a+c*a, 2*b*a+2*b^3, 2*c*a+2*c*b]
[ a^2+2*b*a+c*a, b*a+2*b^3, c*a+2*c*b]
[ a^2, 0, b*a]
Phép chia ma trận thực chất là phép nhân với ma trận nghịch đảo
Lấy ma trận nghịch đảo thực hiện bằng hàm inv
>> A = [1 2 1; 1 0 1]
A =
>> B = [1 0 2; 2 1 1; 1 1 1]
B =
>> C = inv(B)
C =
0 1.0000 -1.000 -0.5000 -0.5000 1.5000
0.500 -0.5000 0.5000
>> D = A*C
D=
- 0.5000 -0.5000 2.5000 0.5000 0.5000 -0.5000
Chú ý: Trong các phép tính trên nếu nếu thực hiện với một số thực thì tất cả các phần tử trong ma trận sẽ đợc cộng, trừ, nhân, chia ( / ) với số thực đó tuỳ thuộc vào phép toán tơng ứng
>> A = [1 2 1; 1 0 1]
A =
B
A B A
C *1
Trang 111 2 1
>> B = A*2
B =
4.5.4 Phép quay ma trận: Quay ma trận B đi 1 góc 90 độ theo ngợc chiều kim đồng
hồ
>> a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
>> b=rot90(a)
b =
3 6 9
2 5 8
1 4 7
4.5.5.Phép đảo ma trận: Đảo các phần tử của ma trận từ trái sang phải.
>> c=fliplr(b)
c =
9 6 3
8 5 2
7 4 1