Xin vui lòng, kiểm tra các ý kiến trên. Đây là một triển khai nhanh trong R.
x <- c(1,2,1,1,3,4,4,1,2,4,1,4,3,4,4,4,3,1,3,2,3,3,3,4,2,2,3)
p <- matrix(nrow = 4, ncol = 4, 0)
for (t in 1:(length(x) - 1)) p[x[t], x[t + 1]] <- p[x[t], x[t + 1]] + 1
for (i in 1:4) p[i, ] <- p[i, ] / sum(p[i, ])
Các kết quả:
> p
[,1] [,2] [,3] [,4]
[1,] 0.1666667 0.3333333 0.3333333 0.1666667
[2,] 0.2000000 0.2000000 0.4000000 0.2000000
[3,] 0.1428571 0.1428571 0.2857143 0.4285714
[4,] 0.2500000 0.1250000 0.2500000 0.3750000
Việc triển khai (có lẽ là ngớ ngẩn) trong MATLAB (mà tôi chưa bao giờ sử dụng, vì vậy tôi không biết điều này có hiệu quả hay không. Tôi vừa mới googled "khai báo ma trận vector MATLAB" để lấy cú pháp):
x = [ 1, 2, 1, 1, 3, 4, 4, 1, 2, 4, 1, 4, 3, 4, 4, 4, 3, 1, 3, 2, 3, 3, 3, 4, 2, 2, 3 ]
n = length(x) - 1
p = zeros(4,4)
for t = 1:n
p(x(t), x(t + 1)) = p(x(t), x(t + 1)) + 1
end
for i = 1:4
p(i, :) = p(i, :) / sum(p(i, :))
end