Giáo trình Matlab và ứng dụng
46
chơng 4 - Ma trận và 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 là một
mảng hai chiều mà các phần tử có thể là số thực hoặc số phức. Thông thờng hai
thuật ngữ ma trận và mảng đợc sử dụng thay thế cho nhau. Chính xác hơn thì
ma trận là một mảng hai chiều hình chữ nhật với các phần từ là các số thực hoặc
số phức. Các phép toán đại số tuyến tính về ma trận đợc sử dụng rất rộng rãi
trong các lĩnh vực kỹ thuật. Trong Matlab, các phần tử của ma trận có thể là các
chữ số cũng có thể là các ký tự không số (symbol - biểu tợng).
- Ma trận A có n hàng, m cột đợc gọi là ma trận cỡ (kích thớc) n ì m và
đợc ký hiệu là A
n
ì
m
- Phần tử a
ij
(i = 1 ữn, j = 1ữm) của ma trận A
n
ì
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. Nói cách khác, mỗi một
số vô hớng (số nguyên, số thực hoặc số phức) đợc coi là một ma trận đơn có
kích thớc (1x1).
- Một véc tơ hàng là một ma trận có kích thớc (1xm) và đợc biểu diễn
nh sau:
a
11
a
12
... a
1m
- Một véc tơ cột là một ma trận có kích thớc (nx1) và đợc biểu diễn nh
sau:
a
11
a
21
a
n1
Giáo trình Matlab và ứng dụng
47
4.1.1- Các qui định để định nghĩa một ma trận:
- Tên ma trận là một chuỗi ký tự dài tối đa 31 ký tự. Tên phải bắt đầu bằng
chữ cái sau đó có thể là số, chữ cái, một số ký tự đặc biệt trừ các ký 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 [a
ij
].
- Các phần tử trong một hàng của ma trận đợc cách nhau bởi ký tự trắng
(space) hoặc dấu phẩy (,).
- Kết thúc một hàng trong ma trận bởi dấu (;). Nói cách khác dấu (;) phân
cách giữa các hàng của ma trận
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 ;
>> B =[1 2 3;
4 5 6 ;
7 8 9]
- Nhập thông qua 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
4 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
Giáo trình Matlab và ứng dụng
48
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 (sau khi nhấn
enter) kết quả đều đợc lu trong không gian làm việc Workspace 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
- 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ự (symbol). 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 %sinx, cosx, a là các biến Symbolic
Giáo trình Matlab và ứng dụng
49
>> b = [ sinx cosx; a cosx]
b =
[ sinx, cosx]
[ a, cosx]
>> c=[a sinx; a a]
c =
[ a, sinx]
[ a, a]
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 =
30 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
Giáo trình Matlab và ứng dụng
50
4.2- Xử lý trong ma trận:
4.2.1- Tạo véctơ:
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 có thể là các số nguyên hoặ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.
VD >> C = 1:5
C =
1 2 3 4 5
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 =
1 2 3
Giáo trình Matlab và ứng dụng
51
4 5 6
7 8 9
>> B = A(1,1)
B =
1
>> A(3,3) = A(2,2) + B
A =
1 2 3
4 5 6
7 8 6
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 =
1 2 3
4 5 6
7 8 9
>> B = A(2,:)
B =
4 5 6
>>C = A(:,2)
C =
2
5
8
Giáo trình Matlab và ứng dụng
52
4.2.3- Gọi 1 ma trận con từ một ma trận lớn.
VD:
>> A = [1:3; 4:6; 7:9]
A =
1 2 3
4 5 6
7 8 9
>> B = A ( 2:3,1:2 )
B =
4 5
7 8
>> 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 =
0 0 0
0 0 0
>> d = zeros(3)
d =
0 0 0
Giáo trình Matlab và ứng dụng
53
0 0 0
0 0 0
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 =
1 1 1
1 1 1
>> d = ones(3)
d =
1 1 1
1 1 1
1 1 1
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
>> A = Magic (3)
A=
8 1 6
3 5 7
4 9 2
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.
Giáo trình Matlab và ứng dụng
54
VD:
>> B = eye (3)
B =
1 0 0
0 1 0
0 0 1
4.3.5- Ma trận Pascal:
>> pascal(4)
ans =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
4.4- Các phép toán vector
hép toán ông thức atlab
ộng, trừ +B, A-B +B, A-B
hân mảng B = C *B
hia trái mảng A \A
hia phải mảng /B /B
uỹ thừa mảng
B
^B
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 =