
9/3/2019
1
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 1
Giảng viên: Ths. Trần Kim Bằng
Bộ môn Cơ Kỹ Thuật, P.106B4
Khoa Khoa Học Ứng Dụng
Đại học Bách Khoa TpHCM
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 2
Chương 2
Các phép toán trên
ma trận
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 3
2.1. Mảng đơn (vector)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 4
2.1.1. Cú pháp khai báo mảng đơn
>> x= [a b c d]
Tên mảng Các phần tử mảng Khoảng trắng hoặc
dấu “,”
Vector hàng:
>> x= [a; b; c; d]
Vector cột:
“;” là xuống hàng
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 5
2.1.2. Địa chỉ của mảng
Cú pháp truy cập giá trị phần tử tại vị trí nào đó của mảng
>> x(vitri)
Ví dụ: >>x=[2 3 4 8 6 7]
>>x(1) % truy cập giá trị phần tử thứ nhất của mảng
Cú pháp truy cập giá trị nhiều phần tử của mảng
>> x(a:b)
Ví dụ: >>x1=x(2:4) % truy cập giá trị phần tử thứ 2 đến phần tử thứ 4
>> x(a:c:b)
Ví dụ: >>x2=x(2:2:5) % truy cập giá trị phần tử thứ 2 đến phần tử thứ 5 với
bước nhảy là 2;
Cú pháp gán lại giá trị cho phần tử của mảng:
>> x(vitri)=giatri)
Ví dụ: >>x(2)=5 %phần tử thứ 2 được gán lại giá trị 5
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 6
2.1.3. Một số lệnh tạo mảng tự động
Dạng lệnh Chức năng
x=first:last Tạo vector hàng x bắt đầu là first, kết thúc
nhỏ hơn hoặc bằng last, bước mặc định là 1
x=first:increment: last Tạo vector hàng x bắt đầu là first, kết thúc
nhỏ hơn hoặc bằng last, bước là increment
x=linspace(first,last,n) Tạo vector hàng x bắt đầu là first, kết thúc
bằng last, có n phần tử
x=logspace(first,last,n) Tạo vector hàng x bắt đầu là 10first, kết thúc
bằng 10last, có n phần tử
Chuyển vector hàng thành vector cột và ngược lại:
>> y=x’
Ví dụ:
>>x=[2 3 4 8 6 7]
>>y=x’

9/3/2019
2
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 7
2.2. Mảng hai chiều (ma trận)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 8
2.2.1. Cú pháp khai báo ma trận
>> x= [1 2 3 4; 5 6 7 8;…]
Các phần tử
hàng 1
Các phần tử
hàng 2
Đọc ma trận từ một file dữ liệu:
Một file văn bản matran.txt có nội dung:
2 5 9 1
4 6 8 3
2 4 5 1
>> load c:\matran.txt
>> matran
matran=
2 5 9 1
4 6 8 3
2 4 5 1
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 9
2.2.2. Cú pháp tìm kiếm trong ma trận
>> x(vitrihang, vitricot)
Ví dụ: Ta có x=[2 3 4; 8 6 7]
>>x(1,2) % truy xuất phần tử hàng thứ nhất, cột thứ hai của mảng
Cú pháp gán lại giá trị cho phần tử của mảng hai chiều:
>> x(vitrihang, vitricot)=giatri
Ví dụ: >>x(2,3)=5 %phần tử hàng thứ 2, cột 3 được gán lại = 5
Cú pháp truy xuất giá trị cho phần tử của mảng hai chiều
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 10
Tìm và trả về giá trị một phần tử theo một điều kiện toán học
Ví dụ: >> x=-4:4
>> k=find(abs(x)>1) %Tìm tất cả phần tử có trị tuyệt đối lớn
hơn 1 trong mảng x
Ví dụ: >> A=[1 2 3; 4 5 6; 7 8 9]
>> [a b]=find(A>5) %Tim tất cả phần tử lớn hơn 5 trong
mảng A
Chú ý: >> x=-4:4
>> k=find(x) % tìm tất cả phần tử có giá trị khác ) trong mảng x
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 11
Tìm và trả về luận lý
Ví dụ: >> x=-4:4
>> x>1
>> x==1
>> abs(x)>1
Tìm và trả về giá trị
Ví dụ: >> x=-4:4
>> y=x(abs(x)>2)
>> y=x(x==1)
Biểu thức luận lý
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 12
>> A=[1 2 3 ; 4 5 6; 7 8 9]
1 2 3
456
7 8 9
A
123
4 5 6
7 8 0
A
>>A(3,3)=0
2.2.3. Một số ví dụ về thao tác với các phần tử trong ma trận

9/3/2019
3
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 13
>> A=[11 26 63]
Để lấy truy cập giá trị 26, gọi lệnh A(2) hoặc A(1,2)
>> A=[11 26 63]’
Để truy cập giá trị 26, gọi lệnh A(2) hoặc A(2,1)
Để truy cập giá trị phần tử cuối cùng, gọi lệnh A(end)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 14
Để truy cập giá trị 26, gọi lệnh A(5) hoặc A(1,2)
Để truy cập giá trị 7, gọi lệnh A(10) hoặc A(2,3)
Để truy cập giá trị phần tử cuối cùng - 344, gọi lệnh A(end) hoặc A(12)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 15
Gán một giá trị nằm ở vị trí ngoài kích thước ma trận A thì
các vị trí còn lại nếu chưa được gán sẽ tự động bằng 0
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 16
Sử dụng toán tử (:)
Tại vị trí dấu (:) trong ma trận, nó đại diện cho tất cả các hàng hoặc tất
cả các cột
>> x=A(:,1); % đưa dữ liệu ở cột 1 vào vector x
>> y=A(:,2); % đưa dữ liệu ở cột 2 vào vector y
Dấu (:) dùng chọn các ma
trận con từ ma trận khác
Ví dụ:
>> C=[-1 0 0
1 -1 4
1 -1 2
5 2 -1];
>> C1=C(:,2:3);
>> C2=C(3:4,1:2);
C(:) tương đương vector có một
cột, phần tử của cột chính là các
cột của ma trận C
>> C = [ 1 4 7;
2 5 8;
3 6 9];
>> C(:)
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 17
>>A=[1 2 3 ; 4 5 6; 7 8 9]
>>B=A(3:-1:1,1:3) %cách khác >>B=A(3:-1:1,:)
>>C=[A B(1:3,[1 3])]
7 8 9
4 5 6
123
B
1 2 3
456
7 8 9
A
12379
4 5 6 4 6
7 8 9 1 3
C
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 18
>>A=[1 2 3 ; 4 5 6; 7 8 9]
>>B=A(1:2,2:3) %trích từ ma trận [A]
2 3
5 6
B
1 2 3
456
7 8 9
A
>> C=[1 3]
>> B=A(C,C) %trích từ ma trận [A]
1 3
7 9
B
1 2 3
456
7 8 9
A

9/3/2019
4
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 19
Xóa phần tử, hàng, cột, trong ma trận
Xóa cột 1
và tất cả
hàng
Xóa hàng
2 và tất cả
cột
Xóa cột từ 3 đến 4 và
tất cả hàng
Xóa hàng
từ 3 đến 4
và tất cả
cột
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 20
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 21
Dữ liệu minh họa: a=[a1 a2 … an]; b=[b1 b2 … bn], c: số vô hướng
Cộng với số đơn a+c=[a1+c a2+c … an+c]
Nhân với số đơn a*c=[a1*c a2*c … an*c]
Cộng mảng a+b=[a1+b1 a2+b2 … an+bn]
Nhân mảng a.*b=[a1*b1 a2*b2 … an*bn]
Chia phải mảng a./b=[a1/b1 a2/b2 … an/bn]
Chia trái mảng a.\b=[a1\b1 a2\b2 … an\bn]
Lũy thừa mảng
a.^c=[a1^c a2^c … an^c]
c.^a=[c^a1 c^a2 … c^an]
a.^b=[a1^b1 a2^b2 … an^bn]
Chia trái ma trận: C = A \ B = inv(A) * B (giai pt: AX = B)
2.2.3. Các phép toán ma trận với số đơn
Chú ý: .*c ./c .\c .^c : nhân, chia phải, chia trái, lũy thừa từng
phần tử trong ma trận với một số đơn c
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 22
2.2.4. Các phép toán ma trận với ma trận
Phép toán được thực hiện trên từng cặp phần tử tương ứng vị trí, trả về
ma trận kết quả
Ví dụ: Ta có a=[1 2 3; 4 5 6] ; b=[2 3 4; 5 6 7]
>>c=a+b % kết quả c=[3 5 7; 9 11 13]
Chú ý: Toán tử .* : nhân các phần tử tương ứng 2 ma trận với nhau
Toán tử ./ : chia các phần tử tương ứng 2 ma trận với nhau
Toán tử .\ : chia trái các phần tử tương ứng 2 ma trận với nhau
Toán tử * : nhân 2 ma trận với nhau (lưu ý kích thước)
Toán tử .^ : lũy thừa các phần tử tương ứng 2 ma trận với nhau
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 23
1
2
3
1 2 3 366
4 5 6 . 804
7 8 0 351
x b
A
x
x
x
>> A=[1 2 3; 4 5 6; 7 8 0]
>> b=[366; 804;351]
>> x=inv(A)*b
>> x=A\b
Ví dụ: Giải hệ phương trình tuyến tính
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 24
2.2.5. Một số lệnh thao tác với ma trận
Cú pháp Chức năng
ones(n) Tạo ma trận n x n với các phần tử là 1
ones(r,c) Tạo ma trận r x c với các phần tử là 1
eye(n) Tạo ma trận đơn vị kích thước n x n (đường chéo =1)
zeros(n) Tạo ma trận n x n với các phần tử là 0
zeros(r,c) Tạo ma trận r x c với các phần tử là 0
rand(n) Tạo ma trận n x n với các phần tử là số ngẫu nhiên
size(a) Trả về kích thước mảng a

9/3/2019
5
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 25
Cú pháp Chức năng
a’ Chuyển vị của ma trận a
inv(a) Tìm nghịch đảo của ma trận a
det(a) Tính định thức của ma trận a
diag(a) Tạo ma trận với đường chéo gồm các phần tử lấy từ vector
a
Tạo vector gồm các phần tử thuộc đường chéo của ma trận
a
diag(a,k) Chọn đường chéo dựa vào k
•k=0 đường chéo chính
•k>0 đường chéo thứ k trên đường chéo chính
•k<0 đường chéo thứ k dưới đường chéo chính
a=diag(v) Nếu v là vector thì a là ma trận vuông có v là
đường chéo chính. Các phần tử khác bằng 0
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 26
Cú pháp Chức năng
eig(a) Tìm trị riêng của ma trận a
rank(a) Xác định hạng của ma trận a
b=triu(a) Sinh ra ma trận b cùng cỡ, chứa các phần tử a nằm
ở đường chéo chính và trên đường chéo chính. Vị trí
khác bằng 0
triu(a,k) Phần tử a nằm trên và phía trên đường chéo thứ k
tril(a)
Sinh ra ma trận cùng cỡ, chứa các phần tử a nằm ở
đường chéo chính và dưới đường chéo chính. Vị trí
khác bằng 0
tril(a,k)
Phần tử a nằm ngay trên và phía dưới đường chéo
thứ k. Các vị trí khác bằng 0
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 27
2.2.6. Một số lệnh đặc biệt thao tác trên ma trận
Đảo ngược hàng hoặc cột
Ví dụ: >> A=[1 2 3; 4 5 6; 7 8 9]
>> B=flipud(A) % Đảo ngược hàng trên dưới
>> C=fliplr(A) % Đảo ngược cột trái phải
Xoay 900 ma trận
Ví dụ: >> A=[1 2 3; 4 5 6; 7 8 9]
>> D=rot90(A) % Xoay ma trận với góc 900
>> D=rot90(A,2)% Xoay ma trận 2 lần với góc 900
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật
Matlab® – Matrix Laboratory 28
Sort: Xếp theo thứ tự từ nhỏ đến lớn
Ma trận chứa giá
trị các phần tử
đã được sắp xếp
Ma trận vị trí các
phần tử trong ma
trận cũ
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 29
Max và Min: tìm phần tử lớn nhất, nhỏ nhất
Ma trận chứa
phần tử lớn nhất
trong từng cột
của ma trận a.
Ma trận chứa vị
trí hàng của
phần tử lớn nhất
Phần tử nhỏ nhất
Vị trí phần tử nhỏ nhất
Khoa Khoa học ứng dụng
Bộ môn Cơ kỹ thuật
Đại học Quốc gia Thành phố Hồ Chí Minh
Trường đại học Bách Khoa
Lập trình tính toán Cơ kỹ thuật Matlab® – Matrix Laboratory 30
repmat(A,x,y) copy mảng A thành x dòng và y cột

