Khóa học
Ma trận là các đối tượng mà các phần tử được biểu diễn trong cấu trúc hai chiều, chủ yếu là phần tử số để thực hiện nhiều phép tính khác nhau.
Ví dụ, hãy xem ma trận dưới đây.
[,1] [,2] [,3]
[1,] 5 6 7
[2,] 8 9 10
[3,] 11 12 13
Ma trận trên cho thấy có 3 hàng và 3 cột.
Trong R, ma trận có thể được tạo bằng 'matrix()'.
Cú pháp định nghĩa một ma trận trong R như sau:
matrix(value, nrow, ncol, byrow, dimnames)
Các tham số cho hàm matrix được định nghĩa như sau:
- value - chỉ định đầu vào là một vector, trong đó mỗi phần tử là một phần tử trong ma trận.
- nrow - chỉ định số hàng của ma trận.
- ncol - chỉ định số cột của ma trận.
- byrow - giá trị boolean gồm TRUE hoặc FALSE. Nếu TRUE, các phần tử của ma trận được điền theo hàng; nếu FALSE, các phần tử được điền theo cột.
- dimnames - chỉ định tên được gán cho từng hàng và cột của ma trận.
Xem ví dụ dưới đây, trong đó 'mat' là tên của một ma trận với đầu vào vector bên trong c gồm các giá trị 8,4,5,6,7,9. Nó cũng chứa số hàng, tức 'nrow' là 2 và 'ncol' là 3, nghĩa là kích thước ma trận là 2 * 3. Đồng thời, các phần tử của ma trận được sắp xếp theo hàng, tức là các giá trị của vector được điền theo từng hàng.
mat = matrix(c(8,4,5,6,7,9),nrow = 2, ncol = 3,byrow = TRUE)
print(mat)
Kết quả của đoạn mã trên được hiển thị dưới đây, trong đó có ba cột và hai hàng với các phần tử được điền theo hàng.
[,1] [,2] [,3]
[1,] 8 4 5
[2,] 6 7 9
Đặt tên Hàng và Cột
Hãy tạo một ma trận có các phần tử từ 1 đến 9, số hàng là 3. Đồng thời, các hàng và cột được đặt tên bằng vector chứa danh sách từ r1 đến r3 và c1 đến c3.
mat <- matrix(1:9, nrow = 3,dimnames = list(c("r1","r2","r3"), c("c1","c2","c3")))
mat
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
Kết quả trên cho thấy các phần tử từ 1 đến 9 được điền theo cột. Đồng thời, các hàng và cột được gắn nhãn từ r1 đến r3 và c1 đến c3.
Truy cập Phần tử trong ma trận
Ma trận dưới đây có tên là 'mat', gồm 3 hàng và 3 cột.
c1 c2 c3
r1 1 4 7
r2 2 5 8
r3 3 6 9
Để truy cập từng phần tử của ma trận trên, bạn cần truyền tên ma trận kèm theo dấu ngoặc với chỉ số hàng và cột bên trong.
- Để truy cập phần tử 5 từ ma trận trên, dùng cú pháp:
mat[2,2] - Để truy cập phần tử 6 từ ma trận trên, dùng cú pháp:
mat[3,2] - Để truy cập toàn bộ cột thứ nhất của ma trận, tức [1 2 3], dùng cú pháp:
mat[,1] - Để truy cập toàn bộ hàng thứ hai của ma trận, tức [2 5 8], dùng cú pháp:
mat[2,]
Tính toán với ma trận
Phép Cộng và Trừ Ma trận
Điều kiện: Điều kiện để cộng và trừ ma trận là các ma trận phải có cùng kích thước, tức số hàng và số cột giống hệt nhau. Ví dụ
Hai ma trận dưới đây mat1 và mat2 có kích thước 3 * 3, tức có 3 hàng và 3 cột, trong đó số hàng và số cột ở cả hai ma trận đều bằng nhau.
mat1 <- matrix(c(5,10,15,20,25,30,35,40,45), nrow = 3)
print(mat1)
mat2 <- matrix(c(50,55,60,65,70,75,80,85,90), nrow = 3)
print(mat2)
[,1] [,2] [,3]
[1,] 5 20 35
[2,] 10 25 40
[3,] 15 30 45
[,1] [,2] [,3]
[1,] 50 65 80
[2,] 55 70 85
[3,] 60 75 90
Các ma trận trên được in ra, trong đó từng phần tử được hiển thị và dữ liệu được điền theo cột.
add_output <- mat1 + mat2
cat("Addition","\n")
print(add_output)
sub_output <- mat1 - mat2
cat("Subtraction","\n")
print(sub_output)
Addition
[,1] [,2] [,3]
[1,] 55 85 115
[2,] 65 95 125
[3,] 75 105 135
Subtraction
[,1] [,2] [,3]
[1,] -45 -45 -45
[2,] -45 -45 -45
[3,] -45 -45 -45
Kết quả trên từ phép cộng và trừ ma trận cho thấy từng phần tử tương ứng của hai ma trận được cộng hoặc trừ với nhau. Ví dụ, trong phép cộng ma trận, phần tử ở hàng 1 cột 1 là 5 trong mat1 được cộng với phần tử ở hàng 1 cột 1 trong mat2, cho ra kết quả 55. Tương tự, tất cả các phần tử đều thực hiện theo cách này trong cả phép cộng và phép trừ để cho ra kết quả như trên.
Phép Nhân và Chia Ma trận
Điều kiện: Điều kiện để nhân và chia ma trận là số hàng và số cột phải giống nhau. Nói cách khác, kích thước phải bằng nhau.
Phép Nhân Ma trận
Hãy xem ví dụ dưới đây với hai ma trận có tên mat1 và mat2, số hàng là ba và số cột là hai, giống nhau. Có sáu phần tử trong mỗi ma trận, được điền theo cột, và kích thước của mỗi ma trận là 3 * 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 * mat2
print('------------------')
cat("Multiplication","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
-----------------
Multiplication
[,1] [,2]
[1,] 28 160
[2,] 64 220
[3,] 108 288
Kết quả từ phép nhân ma trận ở trên cho thấy từng phần tử của mat1 và mat2 được nhân với nhau. Ví dụ, 'mat1[1][1]' là 2 được nhân với 'mat2[1][1]' là 14 để được 28. Tương tự, quy trình được áp dụng cho mọi phần tử ở cả hai ma trận và cuối cùng tại 'mat1[3][2]' là 12 và 'mat2[3][2]' là 24 để được 288.
Phép Chia Ma trận
Hãy xem ví dụ dưới đây với hai ma trận có tên mat1 và mat2, số hàng là ba và số cột là hai, giống nhau. Có sáu phần tử trong mỗi ma trận, được điền theo cột, và kích thước của mỗi ma trận là 3 * 2.
mat1<- matrix(c(2,4,6,8,10,12), nrow = 3,ncol =2)
print(mat1)
mat2 <- matrix(c(14,16,18,20,22,24), nrow = 3,ncol=2)
print(mat2)
final <- mat1 / mat2
print('--------------')
cat("Division","\n")
print(final)
[,1] [,2]
[1,] 2 8
[2,] 4 10
[3,] 6 12
[,1] [,2]
[1,] 14 20
[2,] 16 22
[3,] 18 24
--------------
Division
[,1] [,2]
[1,] 0.1428571 0.4000000
[2,] 0.2500000 0.4545455
[3,] 0.3333333 0.5000000
Kết quả từ phép chia ma trận ở trên cho thấy từng phần tử của mat1 và mat2 được chia cho nhau. Ví dụ, 'mat1[1][1]' là 2 được chia cho 'mat2[1][1]' là 14 để được 0.1428571. Tương tự, quy trình được áp dụng cho mọi phần tử ở cả hai ma trận và cuối cùng tại 'mat1[3][2]' là 12 và 'mat2[3][2]' là 24 để được 0.5000000.
Chúc mừng
Chúc mừng bạn đã hoàn thành hướng dẫn này!
Trong hướng dẫn này, bạn đã tìm hiểu về ma trận trong R, cách đặt tên hàng và cột, truy cập phần tử cùng các phép tính như cộng, trừ, nhân và chia.
Nếu bạn muốn học thêm về R, hãy tham gia khóa học Giới thiệu về R của DataCamp.