Theo ý anh admin thì tôi viết bài này với mục đích là giúp ai đang và sẽ nghiên cứu mã hóa FEC xử lý dữ liệu của ma trận Galois field.
Mã hóa FEC (Foward Error Control) hay còn gọi là Eror control Coding-là một mã hóa sửa lỗi được sử dụng khá nhiều trong thông tin di động, thông tin vệ tinh, truyền hình số/DVB,...và cả trong lĩnh vực IT.
Mã hóa FEC thuộc dạng mã hóa kênh, gồm mã khối (block coding) như mã RS (Reed-solomon), BCH, Hamming...và mã chập (convolutional coding) như mã CC (convolutional coding), viterbi decoding.
RS và CC có nhiệm vụ sửnoa sai cho tín hiệu thu được. RS vì là thuộc mã khối tốc độ cao cho nên khi kết hợp với mã chập sẽ giúp tăng khả năng sửa sai cho mã chập.
RS cũng là mã BCH cho nên các giá trị của các hệ số lấy từ trường Galois field (GF) (ví dụ về GF: chúng ta dùng số thập phân thì ta gọi là GF(10) chỉ gồm các số từ 0 đến 9, số nhị phân thì có GF(2) gồm các số 0,1. RS thì có GF(2^8) nên gọi là GF(2) mở rộng). Cho nên khi sử dụng Matlab để mã hóa RS thì dữ liệu ra sẽ là một dạng ma trận trường GF.
>> n = 7; k = 3; % Codeword length and message length
m = 3; % Number of bits in each symbol
msg = gf([1 6 4; 0 4 3],m); % Message is a Galois array.
c = rsenc(msg,n,k)c = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)
Array elements =
1 6 4 4 3 6 3
0 4 3 3 7 4 7
Nhưng rất khó để các bạn xử lý ma trận c đó như một ma trận bình thường.
c2=de2bi(c)
??? Error using ==> de2bi
Only string and numeric arguments are accepted.
Nếu kết hợp với mã CC cũng gặp vấn đề tương tự. Các bạn xem trang này cũng có vấn đề tương tự:http://www.ddth.com/showthread.php?t=61896
Vì vậy, hướng giải quyết sẽ là chuyển ma trận GF đó về dạng ma trận bình thường (ko thuộc GF nữa) => sử dụng lệnh sau: double(matranGF.x)
Ví dụ trên sửa lại:
>>n = 7; k = 3; % Codeword length and message length
m = 3; % Number of bits in each symbol
msg = gf([1 6 4; 0 4 3],m); % Message is a Galois array.
c = rsenc(msg,n,k); % Code will be a Galois array.
c1=double(c.x); %CÁI CÂU LỆNH QUAN TRỌNG Ở ĐÂY!!>>c1 =
1 6 4 4 3 6 3
0 4 3 3 7 4 7
c1 đã trở thành ma trận thông thường, từ đây ta có thể xử lý nó đơn giản
>>c2=de2bi(c1)
c2 =
1 0 0
0 0 0
0 1 1
0 0 1
0 0 1
1 1 0
0 0 1
1 1 0
1 1 0
1 1 1
0 1 1
0 0 1
1 1 0
1 1 1
@admin: nhờ anh giải thích giúp em về cái lệnh double(c.x) với. Tại em cũng đọc lung tung nên mới tìm ra thôi mà
Các bài viết liên quan:
- Sang năm mới chuyển blog sang nhà mới Đã hoàn thành việc chuyển host của ngohaibac.net và ngohaibac.com sang nhà mới Bluehost rồi keke. Đặt chung vào host của anh Hiệp, nên thỉnh thoảng phải nhờ thằng ku Dương config hộ, nhưng không sao 2 anh em hay chát chit với nhau mà he he. Bắt đầu chuyển DNS từ đêm 30 tết, [...]...
- Cùng nhau chuyển sang Blog Yahoo 360 Plus http://vn.blog.yahoo.com/ Chào các bạn. Sáng nay vừa chuyển tất cả các bài ở Blog 360 cũ sang nhà mới xong, cảm giác thật vui sướng, giờ mới viết bài giới thiệu được. Blog của mình: http://vn.myblog.yahoo.com/ngohaibac-hangyeu Dù sao thì Blog yahoo vẫn là mạng xã hội lớn nhất ảnh hướng đến Vietnam, số người dùng [...]...
- Phương pháp quét Keypad ma trận dùng ngắt Timer Chào các bạn. Mình không biết phương pháp này các bạn biết chưa, hoặc đã ai post chưa. Nhưng đó là mình suy nghĩ và code ra chứ không hề copy ý tưởng hay code của ai khác . Phương pháp dựa trên dùng ngắt Timer0 dùng cho PIC16F887 do đó sẽ rất là tối [...]...
- 27/08/2008 Đã sang Hàn Quốc Chào các bạn. Vậy là sau khi bay 4h đồng hồ và nhiều giờ đi xe bus mình đã đến trường KUT(Korea University of Technology and Education) và Lab của mình. Lab của mình là KUT BioRobotics Lab. Website của Lab mình nè: http://robot.kut.ac.kr/ Cuộc sống ở đây rất tốt, mọi người rất thân thiện [...]...
- Nếu chuyến tàu chở Bác Hồ bị đắm ? Hôm nay vào answer của Yahoo thấy câu hỏi này thấy rất thú vị nên đang theo dõi. Xin mời các bạn vào xem Đề bài là: Bác hồ lên tầu sang pháp tìm đường cứu nước.nếu chẳng may tầu đó bị đắm thì lịch sử việt nam mình như thê nào? Các ban có [...]...
- Lại chuyển nhà mới và dọn dẹp blog Tình hình là cái host nằm chỗ anh Hiệp chạy chậm như bò như rùa, với lại chắc là ham cài mấy cái plugin nên thời gian load website của mình dài. Mải tập trung vào effect nên không để ý đến tốc độ he he. Vì thế, đã move blog sang host này (cũng [...]...



{ 7 comments… read them below or add one }
Phê duyệt bài viết của em. Em viết hay đấy chứ. Anh đã chỉnh sửa lại các đoạn code cho vào trong thẻ b-quote trông cho dễ nhìn em ạ.
Còn tại sao dùng lệnh đó thì anh mới biết cái cấu trúc của array đó em ạ.
Ma trận C có 3 trường là: x, m, prim_poly. Anh thử code thì ra kết quả sau:
Còn lệnh double(c.x) thực ra là ép kiểu dữ liệu thôi em ạ. Nó chuyển tất cả các phần tử của ma trận c.x thành double.
Chúc em thành công.
cảm ơn anh nhiều.
Ủa trước giờ mình vẫn dùng lệnh double để chuyển số trong bảng mã ASCII sang số decimal mà????
Hình như nói đến trường GF(2^x) thì còn nói đến các đa thức tối giản phải ko vậy? Cho mình hỏi đa thức đó tìm sao vậy? Thanks
Các anh có thể nói cách chuyển ngược lại từ một ma trận thường sang ma trận dạng GF không
em không thuộc chuyên ngành này nhưng thầy bắt báo cáo về mã sửa lỗi reed- solomon phải có mô phỏng. bác nào có chương trình mô phỏng gửi cho em với em chẳng biết mô phỏng sao cả. mail của em.tnb05101@zing.vn . kính mong sự giúp đỡ của mọi người
Không phải vấn đề nằm ở chỗ đó em ạ.
Vấn đề là xác định được cái trường x của mảng Galois array chứ em. Khi đó c.x đã là một ma trận rồi em ạ.
Khi đó thì thích làm gì thì làm với ma trận này.
Chúc em thành công.