Mảng đơn (vector)
Cú pháp khai báo mảng đơn:
Vector hàng: >> x= [a b c d]
Vector cột: >> x= [a; b; c; d]
Đị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ụ: Có mảng x=[2 3 4 8 6 7]
>>x(1) %phần tử thứ nhất của mảng, x(1)=2
Cú pháp truy cập giá trị nhiều phần tử của mảng: >> x(a:b)
Ví dụ: Có mảng x=[2 3 4 8 6 7]
>>x1=x(2:4) %phần tử thứ 2 đến ptử thứ 4; x1=[3 4 8] >>x2=x(2:2:5) %phần tử thứ 2 đến ptử thứ 5 với bước nhảy là 2; x2=[3 8]
Cú pháp gán lại giá trị cho phần tử của mảng: >> x(vitri)=giatri
>>x(2)=5 %phần tử thứ 2 được gán lại = 5; x=[2 5 4 8 6 7]
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’
>>x=[2 3 4 8 6 7] >>y=x'
Mảng 2 chiều (ma trận)
- Cú pháp khai báo ma trận: >> x= [1 2 3 4; 5 6 7 8; … ]
Các phép toán ma trận với số đơn (+ – * /): Phép toán được thực hiện trên từng phần tử, trả về ma trận kết quả
Ví dụ: Có x=[1 2 3; 4 5 6]
>>x1=x*2 % kết quả x1=[2 4 6; 8 10 12]
Chú ý: Toán tử .^ : lũy thừa từng phần tử trong ma trận
- Cú pháp truy cập giá trị phần tử tại vị trí nào đó của mảng hai chiều: >> x(vitrihang, vitricot)
Ví dụ: Có x=[2 3 4; 8 6 7]
>>x(1,2) %phần tử hàng thứ nhất, cột thứ hai của mảng, x(1,2)=3
Cú pháp gán lại giá trị cho phần tử của mảng hai chiều: >> x(vitrihang, vitricot)=giatri
>>x(2,3)=5 %phần tử hàng thứ 2, cột 3 được gán lại = 5; x=[2 5 4; 8 6 5]
Các phép toán đối với các phần tử mảng | 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] |
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ụ: 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ử .^ : lũy thừa 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)
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 |
diag(a) | Tạo ma trận đường chéo với các phần tử trên đường chéo lấy từ vector a |
size(a) | Trả về kích thước mảng a |
Ví dụ thao tác trên ma trận:
>> A=[1 2 3 ; 4 5 6; 7 8 9] >> A(3,3)=0
Ví dụ:
>> A(2:6)=1 >> A(:,4)=4
Ví dụ thao tác trên ma trận:
>>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])]
Ví dụ thao tác trên ma trận:
>>A=[1 2 3 ; 4 5 6; 7 8 9] >>B=A(1:2,2:3) %trích từ ma trận [A]
Ví dụ thao tác trên ma trận:
>> C=[1 3] >> B=A(C,C) %trích từ ma trận [A]
Tìm kiếm trên ma trận
- Tìm và trả về luận lý:
>> x=-4:4 >> x>1 >> x==1 >> abs(x)>1
- Tìm và trả về giá trị:
>> x=-4:4 >> y=x(abs(x)>2) >> y=x(x==1)
- Tìm và trả về vị trí:
>> x=-4:4 >> k=find(abs(x)>1)
>> A=[1 2 3; 4 5 6; 7 8 9] >> [a b]=find(A>5)
>> x=-4:4 >> k=find(x) % ngầm hiểu tìm x(i)>0
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
>> A=[1 2 3; 4 5 6; 7 8 9] >> B=flipud(A) % flip up-down >> C=fliplr(A) % flip left-right
- Xoay 900 ma trận
>> A=[1 2 3; 4 5 6; 7 8 9] >> D=rot90(A) % rotate 90^0 >> D=rot90(A,2) % rotate 2x90^0
- Chuyển mảng 1 chiều thành mảng 2 chiều
>> A=[1 2 3 4 5 6 7 8 9 10 11 12] % A=1:12 >> B=reshape(A,3,4) % size(B)=3x4 >> B=reshape(A,2,6) % size(B)=2x6
- Lấy đường chéo ma trận
>> A=[1 2 3; 4 5 6; 7 8 9] >> B=diag(A)
- Tạo lại ma trận từ đường chéo
>> A=[1 2 3; 4 5 6; 7 8 9] >> B=diag(A) >> C=diag(B)
- Lấy ma trận tam giác trên, dưới từ 1 ma trận
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12] >> B=triu(A) % upper triangular part >> C=tril(A) % lower triangular part
Ứng dụng ma trận trong đại số tuyến tính
- Giải phương trình tuyến tính
>> A=[1 2 3; 4 5 6; 7 8 0] >> b=[366; 804;351] >> x=inv(A)*b >> x=A\b
- Nghịch đảo ma trận
>> A=[1 2 3; 4 5 6; 7 8 9] >> B=inv(A)
- Tính hạng ma trận
>> A=[1 2 3; 4 5 6; 7 8 9] >> B=rank(A)
- Tính định thức ma trận vuông
>> A=[1 2 3; 4 5 6; 7 8 9] >> C=det(A)