Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
615,48 KB
Nội dung
Hướng dẫn giải tập mô CHƯƠNG Bài 1: Hãy đọc mã chương trình mơ NVD_Rayleigh_Fading_Sim thực mơ kênh pha đinh Reyleigh, phân tích nhập tham số đầu vào, chạy chương trình, phân tích kết Vẽ mơ hình mơ phỏng, vẽ lưu đồ thuật toán Hướng dẫn giải: Đọc kỹ phần phụ lục 4A, hiểu mơ hình tốn Chạy chương trình theo bước, thay đổi tham số đầu vào cho chương trình, phân tích ảnh hưởng tham số đầu vào lên kết mô Vẽ lưu đồ thuật tốn -538- Hướng dẫn giải tập mơ function [h_t] = NVD_Rayleigh_Fading_Sim() %====================================================== %===================================================== % Inputs % f_D : [Hz] Doppler frequency % t : simulation time interval length, time interval [0,t] % f_s : [Hz] sampling frequency, set to 1000 if smaller % Outputs % Ts : [Sec][1xN double] time instances for the Rayleigh signal % z_dB : [dB] [1xN double] Rayleigh fading signal %%%%========================================== %%% Programmed by Nguyen Viet Dam PTIT %%% Date: 25-12-2007 %%%=========================================== B = [1.4 5.6 11.2 22.4]*1e6; FFTsize = [128 512 1024 2048]; ScaleB1 = B./FFTsize; % SubcarrierSpace=10.938e3 (fixed); OfdmSize = [128 512 1024 2048]+(1/8)*[128 512 1024 2048]; f_s = ScaleB1(1); %============================================ fc = 3.5e9; % RF Carrier v = [5 15 35]; % Speed Km/h f_D = ceil((v/3.6)*(fc/3e8)); % Doppler Frequency Vector t = 1; % Time Simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Required parameters if f_s < 1000, f_s = 1000; end % [Hz} Min required sampling rate N = ceil(t*f_s); % Number of samples if mod(N,2) == 1, N = N + 1; end Ts = linspace(0,t,N); % Use even number of samples f = linspace(-f_s,f_s,N); % Generate I & Q complex Gaussian samples in frequency domain Gfi_p = randn(2,N/2); Gfq_p = randn(2,N/2); CGfi_p = Gfi_p(1,:)+ i*Gfi_p(2,:); CGfq_p = Gfq_p(1,:)+ i*Gfq_p(2,:); CGfi CGfq = [fliplr(CGfi_p) CGfi_p]; = [fliplr(CGfq_p) CGfq_p]; % Generate fading spectrum for shaping Gaussian line spectra P_r = 1; % normalize average received envelope to 0dB % S_r = P_r/(4*pi)./(f_D*sqrt(1-(f/f_D).^2)); %Doppler spectra for k=1:length(f_D) S_r(k,:) = P_r/(4*pi)./(f_D(k)*sqrt(1-(f/f_D(k)).^2)); %Doppler spectra % Set samples outside the Doppler frequency range to idx1 = find(f>f_D(k)); idx2 = find(f3 x 2π Xác suất lỗi khối tin khơng mã hóa PMu PMu = − (1 − p u ) = 1− k (1 − p u ) 11 xác suất mà toàn 11 bit khối không đợc mã hóa = 1,12 ì 104 xác suất mà có bit số 11 bit bị lỗi (2) Trng hp sử dụng mã hóa kênh: Tốc độ ký hiệu kênh tốc độ bit mã Rc gấp 15/11 lần tốc độ liệu Rb: 15 ≈ 6545 11 Ec P 1 = r = 6,69 N0 N0 R R c = 4800 × Tỷ số bps (8,3 dB) Ec cho bit mã nhỏ Eb/N0 cho bit liệu tốc độ bit kênh N0 tăng lên, công suất phát giả thiết không đổi: -541- Hướng dẫn giải tập mô 2E c Pc = Q =Q N ( ) 13,38 = 1,36 × 10−4 (3) Khi so sánh kết (1) với (3), đưa bit dư vào, nên xác suất lỗi bit kênh bị suy thoái (tăn lên) Trong khoảng thời gian với công suất khả dụng phải phát nhiều bit hơn, cải thiện hiệu chất lượng mã hóa kênh khơng thể Tỉ lệ lỗi tin mã hóa PMc tính là: PMc = n =15 ∑ j ( p ) (1 − p ) j= 15 15 − j j c c Tổng bắt đầu j = 2, mã sửa lỗi khối n =15 bits Lấy xấp xỉ lấy kết giá trị số hạng Với giá trị p c tính (3) 15 PMc ≈ (p c ) (1 − p c )13 = 1,94 × 10−6 2 (4) Từ kết (2) (4), cho thấy xác suất lỗi tin cải thiện tới 58 lần (có từ việc dùng mã sửa lỗi) Khi đưa thêm bit dư vào khối tin ban đầu (tốc độ lớn hơn), lượng ký hiệu kênh (bit mã hóa) nhỏ hơn; lỗi đầu giải điều chế nhiều Lợi ích từ mã kênh (tại giá trị tỷ số Eb thích hợp) bù lại tăng N0 lên Bài 2: Một tin bit truyền hệ thống BPSK tỷ số tín hiệu tạp âm thu dB a) Tính xác suất bit mắc lỗi b) Bản tin mã hóa cho từ mã tăng lên bit Xác suất bit mắc lỗi Giả thiết công suất phát hai trường hợp a) b) Hướng dẫn giải: a) Xác suất bit mắc lỗi trường hợp không dùng mã hóa kênh: Eb 2E b 10 = 10 = ⇒ = × = 3,16 N0 N0 Tra bảng hàm Q(x) phụ lục ta Pb=7,9.10-4 Đối với ba bit mắc lỗi ta số tổ hợp lỗi hai bit lỗi bit sau: 3 3! = = 2!(3 − 2)! Xác suất lỗi bit sau: ( −4 3 3− p e = ( Pb ) (1 − Pb ) = 7,9x10 2 ) (1 − 7, 9x10 ) ≈ 6, 4.10 −4 −7 Pb, Pb2 (1-Pb)3-2 xác suất lỗi bit, xác suất lỗi bit xác suất bit không mắc lỗi b) Xác suất bit mắc lỗi trường hợp dùng mã hóa kênh: -542- Hướng dẫn giải tập mô Tốc độ bit sau mã hóa tăng bằng: Rbc=Rb/r=(n/k)Rb, Rb tốc độ bit khơng mã hóa r=3/5 tỷ lệ mã Năng lương bit cho trường hợp mã hoá bằng: E bc = P k P = = rE b R bc n R b ⇓ 2E bc 2rE b E k = = b = 10 × / = 2, 45 N0 N0 N0 n Tra bảng phụ lục ta xác suất lỗi bit mã hóa bằng: Pbc =7,14.10-3 Bài 3: Tìm xác suất lỗi tin cho hệ thống truyền dẫn cho: a) Trường hợp khơng mã hóa PMu b) Trường hợp mã hóa PMc Hướng dẫn giải: a)Xác suất lỗi tin xác suất có số bit mắc lỗi: PMu = − (1 − Pb ) = − (1 − 7,9 × 10−4 ) = 2,37 ì 103 3 Xác suât bit không bị lỗi b) Xỏc sut li bn tin trường hợp dùng mã hóa kênh: Vì khoảng cách Hamming cực tiểu dmin=3, nên mã sửa bit Bản tin bị lỗi khi mắc lỗi 2,3,4,5 bit, thế: c PM = ∑ j ( P ) (1 − P ) n n j bc n− j bc 5 j 5− j = ∑ ( Pbc ) (1 − Pbc ) j= j j= t +1 Hay cách gần ta xét thành phần thứ nhất: ( c −3 5 5 PM ≈ ( Pbc ) (1 − Pbc ) = 7,14.10 2 2 ) (1 − 7,14.10 ) =4,99.10 −3 -4 Kết cho thấy, nhờ mã hóa xác suất lỗi tin cải thiện: (2,37.10-3)/(4,99.10-4) = 4,75 lần Bài a: Băng thông cho hệ thống mã hóa tăng lên lần so với hệ thống khơng mã hóa Hướng dẫn giải: -543- Hướng dẫn giải tập mô Băng thơng Nyquist cho hệ thơng khơng mã hóa là: BN=(1+α)Rb, α hệ số dốc lọc r Băng thơng Nyquist cho hệ thống mã hóa là: B N = (1 + α ) R bc × = n (1 + α ) R b , k r tỷ lệ mã Vậy, băng thơng hệ thống mã hóa tăng so với hệ thống khơng mã hóa là: R bc n = = = lần ( R bc ì r ) r k Bài b: Một hệ thống điều chế BPSK có tốc độ bit Rb=4800bps Tỷ số tín hiệu tạp âm thu: Eb/N0=8dB a) Tìm xác suất lỗi bit Pb xác suất lỗi tin PMu cho hệ thống khơng mã hóa, tin dài 11 bit b) Tìm xác suất lỗi bit mã hóa Pbc xác suất lỗi tin mã hóa PMc cho hệ thống dùng mã khối (15,11) sửa lỗi đơn (t=1) Hướng dẫn giải: a) Trường hợp hệ thống khơng dùng mã hóa kênh 0,8 −4 2E b = 2x10 = 3,55 ⇒ Pb = 1,9.10 N0 PMu = − (1 − Pb ) = − (1 − 1,9.10−4 ) = 2,1.10−3 11 11 b) Trường hợp hệ thống dùng mã khối (15,11): 0,8 c −3 2E b 11 r = 2x10 × = 3, 04 ⇒ Pb = 1,18.10 N0 15 c ( )( ) c 15 − j 15 c j Pb − Pb j= t +1 −3 −3 15 − −4 15 ≈ 1,18.10 (1 − 1,18.10 ) = 1, 44.10 2 PM = 15 ∑j ( ) Hệ số cải thiện hiệu chất lượng là: PMu 2,1.10−3 = = 14,58 lÇn PMc 1, 44.10−4 Bài 5: Thiết kế mã chẵn lẻ đơn (n,k) để phát mẫu lỗi 1, 3, 5, khối liệu Xác định giá trị n k, tìm xác suất lỗi khối khơng thể phát xác suất lỗi ký hiệu kênh 10-2 Hướng dẫn giải: (n, k) = (8, 7) -544- Hướng dẫn giải tập mô n PNonDetect = ( n ch½n ) ( n −1) ( n lÓ ) ∑ j=1 n 2j n −2 j p (1 − p ) j 8 Pnd = p (1 − p)6 + 2 8 4 p (1 − p) + 4 j=1 8 8 p (1 − p) + p 6 8 j=3 j= j= = 28(10−2 ) (1 − 10 −2 )6 + 70(10−2 )4 (1 − 10−2 )4 + 28(10−2 )6 (1 − 10−2 ) + (10−2 )8 = 2, ×10−3 Bài 6: Tính xác suất lỗi tin cho chuỗi liệu 12 bít mã hóa mã khối tuyến tính (24,12) Giả thiết: (i) mã sửa mẫu lỗi bít bít khơng sửa mẫu lỗi nhiều lỗi; (ii) xác suất lỗi ký hiệu kênh Hướng dẫn giải: PM = n n ∑ j p (1 − p ) j= t +1 j n− j 24 24 PM = ∑ p k (1 − p) 24− k k =3 k 24 ≅ (10−3 )3 (1 − 10−3 ) 21 = 1,98 × 10−6 3 Bài 7: Mã khối tuyến tính (127,92) có khả sửa ba lỗi (t=3) a) Tìm xác suất lỗi tin cho khối liệu 92 bít chưa mã hóa xác suất lỗi ký hiệu kênh 10−3 b) Tìm xác suất lỗi tin sử dụng mã khối (127, 92) xác suất lỗi ký hiệu kênh 10−3 Hướng dẫn giải: a) Xác suất lỗi tin cho khối liệu 92 bit chưa mã hóa xác suất lỗi ký hiệu kênh 10−3 PM uncoded = − (1 − 10 −3 )92 = 8,8 ×10 −2 b) Xác suất lỗi tin dùng mã khối (127,92) xác suất lỗi ký hiệu kênh là10−3 127 127 k 127 − k PM code® = ∑ p (1 − p) k =4 k 127 −3 −3 123 ≅ (10 ) (1 − 10 ) 4 = 9,14 ×10−6 -545- Hướng dẫn giải tập mơ Bài 8: Tính cải thiện xác suất lỗi tin so với trường hợp khơng dùng mã khối tuyến tính (24,12) sửa lỗi dùng điều chế BPSK quán / thu 10 dB Hướng dẫn giải: PM = Q ≅ 2E b = Q × 10 = Q ( 4, 47 ) N0 − x2 1 e 2= e −10 = 4, 05 ×10−6 x 2π 4, 47 2π ⇓ −6 12 PM = − (1 − 4, 05 ×10 ) = 4,86 ×10 −5 u Với mã (24,12), tỉ lệ mã hóa 1/2 Do đó, tốc độ liệu gấp đơi tốc độ liệu khơng mã hóa kênh, E c N nhỏ E b N 3dB 0 Ec N0 = 7dB =1010 = 5, 01 Note 2E c pc = Q =Q N ( ) × 5, 01 = Q ( 3,16 ) tra bảng hàm Q(x) => p c = 0, 0008 24 24 24 PM c = ∑ p k (1 − p) 24− k ≅ (0, 0008)3(1 − 0, 0008) 21 k =3 k 3 −6 c PM ≅ 1, 02 × 10 Cải thiện hiệu chất lượng = 4,86 × 10 −5 = 47, 1, 02 × 10−6 Bài 9: Cho khoảng cách nhỏ mã khối tuyến tính 11 Tìm khả phát sửa lỗi tối đa Hướng dẫn giải: d = 11 Sửa lỗi: Ph át lỗi: d −1 t cor = = t detect = d −1 = 10 Bài 10: Cho tạo mã khối tuyến tính có ma trận tạo mã sau: -546- Hướng dẫn giải tập mô 0 1 0 G = 1 1 1 0 1 a) Tìm từ mã b) Tìm Syndrome trường hợp từ mã phát "111" từ mã thu "110" Hướng dẫn giải: a)Tìm từ mã 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 011 011 c=mG= 1 0 = 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 b) Tìm Syndrome trường hợp từ mã phát "111" từ mã thu "110" 1 0 0 1 T H=[I n −k ⋮P T ]= I ⋮ P ; I3 = 0 0 ;P = 1 1 → H= 0 1 1 T 1 0 1 0 1 1 0 1 1 0 0 T 0 1 →H = 0 1 1 1 1 0 0 0 s=yHT=[0 0 1 0] = [1 0] 0 1 1 1 Bài 11: Một tạo mã vòng (7,4) có đa thức tạo mã g(x)= 1+x+x3 tin đầu vào 101 Tìm từ mã đầu Hướng dẫn giải: -547- Hướng dẫn giải tập mô 11 11 11 11 10 10 10 10 10 11 11 Hình Sơ đồ biểu đồ trạng thái, biểu đồ lưới Chuỗi tin đầu vào lập mã m = [1 1 1] Chuỗi vector phát (từ mã phát) cho C = [1 1 0 0 0 1] Giả sử chuỗi thu V = 1 1 Error 0 0 1 Theo ta có biểu đồ lưới cho hình PL3.6 -573- Hướng dẫn giải tập mô 00 s0 = (00) Đầu vào Đầu vào 11 11 K=3; r = 1/2 00 s1 = (10) G1 = 111 s2 = (01) G2 = 101 10 C = [C1 C2] 01 01 s3 = (11) 10 Bản tin vào: m 1 1 Chuỗi phát: C 11 10 00 10 00 01 Chuỗi thu: V 11 10 10 10 00 01 1 1 0 t7 1 2 2 s3 = 11 t6 0 s2 = 01 t5 1 s1 = 10 t4 t3 t2 Trạng thái t1 s0 = 00 Số đo nhánh: Khoảng cách Hamming D(R,V) cho nhánh 2 0 Đạt trạng thái ổn ®Þnh Hình Biểu đồ lưới với số đo nhánh cho khoảng cách Hamming Với nhánh biểu đồ lưới hình có số đo nhánh xác định khoảng cách Hamming n bit nhánh n bit chuỗi bit thu V Ví dụ: hai bit thu 11 tương ứng có khoảng cách Hamming so với bit tương ứnh với chuyển dịch trạng thái từ S0⇒S0 S0⇒S1 Tại thời điểm t = t4 đạt trạng thái ổn định lưới trạng thái khởi đầu lập mã S0=(00) Nếu hai đường dẫn hội nhập vào nut trạng thái, đường dẫn có khoảng cách Hamming cực tiểu so với chuỗi bit thu thời điểm giữ lại đường dẫn bị loại bỏ Tại thời điểm t = ti có 2K-1 nut trạng thái, K độ dài hạn chế lập mã Quá trình giải mã thực sau: Tại thời điểm t = t4 Các đường dẫn sống sót trạng thái thời điểm t = t4 cho hình (a) Đường dẫn sống sót trạng thái a thời điểm t=t4 đường dẫn qua trạng thái S0⇒S1⇒S2⇒S0 với tổng khoảng cách Hamming 0+0+1=1, chọn so với đường dẫn qua trạng thái S0⇒ S0⇒ S0⇒ S0 có tổng khoảng cách Hamming 2+1+1=4 Tại trạng thái b (nut thứ hai) thời điểm t=t4, đường dẫn sống sót S0⇒ S1⇒ S2⇒ S1 có tổng khoảng cách Hamming loại bỏ đường dẫn S0⇒ S0⇒ S0⇒ S1 có tổng khoảng cách Hamming Lưu ý rằng, chưa định bít vào -574- Hướng dẫn giải tập mô Tại thời điểm t=t5 Các đường dẫn sống sót trạng thái cho hình (b) xác định theo khoảng cách Hamming chuyển dịch trạng thái Do tất đường dẫn sống sốt có chuyển dịch trạng thài từ S0⇒ S1 (từ t1 đến t2) nên định bit đầu vào ⇒ khoảng thời gian trễ giải mã từ t1 đến t5 đặc trưng cho cặp sơ đồ lập mã giải mã 1 0 1 0 Hình Các đường dẫn sống sót Tại thời điểm t=t6 Các đường dẫn sống sót cho hình (c) nut trạng thái c nut d đồng xác suất (P=0,5) khoảng cách Hamming Tại thời điểm t=t7 Thực tương tự nhận đường dẫn sống sót cho hình 6(d) -575- Hướng dẫn giải tập mô Hình Các đường dẫn sống sót Thấy rõ, thuật toán Viterbi yêu cầu phải lưu trữ đường dẫn khoảng cách cực tiểu nut trạng thái số đo đường dẫn nó, khoảng cách cực tiểu so với chuỗi thu Hơn nữa, bước cần phải so sánh hai đường dẫn hội nhập vào nut trạng thái, theo cần phải bốn lần so sánh (đối với ví dụ này) Để tránh dùng nhiều nhớ phía phát thực phân đoạn chuỗi bit đưa thêm (K-1)k =2 số (các bit đuôi) vào phân đoạn để đưa trạng thái cuối trạng thái S0 = (00) ⇒ đường dẫn sống sót cuối (kết quả) đường dẫn kết thúc node trạng thái tồn khơng S0=(00) Như việc độn thêm (K-1)k số vào cuối chuỗi tin đẫn đến ép nut trạng thái có trạng thái tồn khơng Cụ thể ví dụ trạng thái S0, S1, S2, S3, chuyển trạng thái a sau: S0⇒ S0⇒ S0; S1⇒ S2⇒ S0; S2⇒ S0⇒ S0; S3⇒ S2⇒ S0; -576- 2 1 1 1 Hướng dẫn giải tập mô 2 2 2 0 Hình Biểu đồ lưới cho thấy hội tụ trạng thái trạng thái S0 = (00) Như đến thời điểm t9, nhận đường dẫn tối ưu Kết ta đường dẫn tối ưu la đường dẫn mà có tổng khoảng cách Hamming t9 trạng thái a nhỏ §én (K-1) =2 bit (bit đuôi) vào cuối tin Bản tin vào: m 1 1 0 Chuỗi phát: C 11 10 00 10 00 01 01 11 Chuỗi thu: 11 10 10 10 00 01 01 11 V Sè đo đờng dẫn tích luỹ (Tổng khoảng cách Hamming tích luü) = t1 t2 t3 S0 = 00 t5 t4 t8 t7 t6 00 0 10 00 10 00 01 S3 = 11 10 11 11 S2 = 01 0 11 S1 = 10 t9 01 e) Sè ®o ®êng dẫn (khoảng cách Hamming tích luỹ) hai đờng dẫn hợp cuối Kết quả: Số đo đờng dẫn tích luỹ (Tổng khoảng cách Hamming tích luỹ) = đợc chọn C( m ' ) = 1 1 0 Tail bit Hình Đường dẫn tối ưu có khoảng cách Hamming nhỏ chọn Trường hợp Sơ đồ lập mã cho hình Hãy dùng phương pháp giải mã Viterbi theo định cứng để giải mã chuỗi thu sau V=01101111010001 -577- Hướng dẫn giải tập mô 11 11 11 11 11 11 11 10 10 10 01 10 10 10 10 11 11 01 10 11 Hình Sơ đồ khối, biểu đồ trạng thái biểu đồ lưới Các tham số đặc trưng M=3; K=3; n=2; k=1 Độ dài chuỗi thu V = 14 ⇒ (L+K-1) =7 ⇒ phải vẽ lưới có độ sâu cho hình PL3.10 ⇒ chuỗi bit tin phát la L=5 Cũng cần lưu ý chuỗi bit tin đầu vào độn (K-1)k bit "0" = bit 0, hai tầng cuối lưới cần vẽ nhánh tương ứng với đầu vào toàn bit không, nghĩa độ dài thực tế chuỗi tin vào 5, sau độn bit tăng lên thành Biểu đồ lưới cho trường hợp cho hình Chuỗi thu V cho hình Giải mã định cứng Lưu ý trình vẽ lưới hai tầng (stage) cuối cùng, xét đầu vào zeros tới lập mã (hai tầng cuối cùng, đường nét đứt tương ứng với đầu vào bit 1) Số đo trạng thái tồn khơng ban đầu đặt 0, số đo tầng tính Trong bước có nhánh (Branch) vào trạng thái (State), khơng có so sánh số đo (metrics số đo khoảng cách Hamming phần chuỗi thu nhánh lưới) cộng với số đo trạng thái state trước -578- Hướng dẫn giải tập mô Tầng tiếp theo, so sánh Trong tầng thứ 4, lần có hai nhánh vào trạng thái state, nghĩa phải thực so sánh chọn đường sống sót Từ hai nhánh vào trạng thái state, nhánh tương ứng với số đo tích luỹ tổng cuối nhỏ giữ lại làm đường dẫn sóng sót, đường lại bị xố (được đánh dấu dấu x lưới) Nếu tầng đó, hai đường dẫn cho kết số đo nhau, chúng đường đường dẫn sống sót, trường hợp phải đánh dấu dấu hỏi ‘?’ biểu đồ lưới Thủ tục diễn trạng thái tồn khơng cuối lưới; sau khởi đầu từ trạng thái (trạng thái tồn khơng), di chuyển dịch dọc theo đường dẫn sống sót tới trạng thái tồn khơng khởi đầu (Initial) Đường dẫn ký hiệu đường dẫn đậm thông qua lưới, đường dẫn tối ưu đường dẫn có khoảng cách Hamming cực tiểu so với chuỗi thu V Chuỗi bít đầu vào tương ứng đường dẫn 1100000, hai bit cuối hai bit không mang thông tin cộng thêm vào để đưa lập mã trở trạng thái toàn khơng Vì chuối bit thơng tin 11000 Từ mã tương ứng với đường dẫn chọn 11101011000000, từ mã có khoảng cách Hamming = so với chuỗi thu Tất đường dẫn khác thông qua lưới có khoảng cách Hamming so với chuỗi bit thu lớn đường dẫn tối ưu Giải mã định mềm Quy trình tương tự với giải mã định cứng song khoảng cách Euclic bình phương thay cho khoảng cách Hamming function [decoder_output] = NVD_COV_Dencoder(G,k,channel_output); n = size(G,1); % check the sizes if rem(size(G,2),k) ~=0 error('Size of G and k not agree') end if rem(size(channel_output,2),n) ~=0 error('channel output not of the right size') end L = size(G,2)/k; number_of_states=2^((L-1)*k); % Generate state transition matrix, output matrix, and input matrix for j=0:number_of_states-1 for l=0:2^k-1 [next_state,memory_contents]=nxt_stat(j,l,L,k); input(j+1,next_state+1)=l; branch_output=rem(memory_contents*G',2); nextstate(j+1,l+1)=next_state; output(j+1,l+1)=bin2deci(branch_output); end end state_metric=zeros(number_of_states,2); depth_of_trellis=length(channel_output)/n; channel_output_matrix=reshape(channel_output,n,depth_of_trellis); survivor_state=zeros(number_of_states,depth_of_trellis+1); % Start decoding of non-tail channel outputs -579- Hướng dẫn giải tập mô for i=1:depth_of_trellis-L+1 flag=zeros(1,number_of_states); if i state_metric(j+1,1) +branch_metric) | flag(nextstate(j+1,l+1)+1)==0) state_metric(nextstate(j+1,l+1)+1,2) = state_metric(j+1,1)+branch_metric; survivor_state(nextstate(j+1,l+1)+1,i+1)=j; flag(nextstate(j+1,l+1)+1)=1; end end end state_metric=state_metric(:,2:-1:1); end % Start decoding of the tail channel-outputs for i=depth_of_trellis-L+2:depth_of_trellis flag=zeros(1,number_of_states); last_stop=number_of_states/(2^((i-depth_of_trellis+L-2)*k)); for j=0:last_stop-1 branch_metric=0; binary_output=deci2bin(output(j+1,1),n); for ll=1:n branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output( ll)); end if((state_metric(nextstate(j+1,1)+1,2) > state_metric(j+1,1) +branch_metric) | flag(nextstate(j+1,1)+1)==0) state_metric(nextstate(j+1,1)+1,2) = state_metric(j+1,1)+branch_metric; survivor_state(nextstate(j+1,1)+1,i+1)=j; flag(nextstate(j+1,1)+1)=1; end end state_metric=state_metric(:,2:-1:1); end % Generate the decoder output from the optimal path state_sequence=zeros(1,depth_of_trellis+1); state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1); for i=1:depth_of_trellis state_sequence(1,depth_of_trellisi+1)=survivor_state((state_sequence(1,depth_of_trellis+2-i) +1),depth_of_trellis-i+2); end decodeder_output_matrix=zeros(k,depth_of_trellis-L+1); for i=1:depth_of_trellis-L+1 dec_output_deci=input(state_sequence(1,i)+1,state_sequence(1,i+1)+1); dec_output_bin=deci2bin(dec_output_deci,k); decoder_output_matrix(:,i)=dec_output_bin(k:-1:1)'; end decoder_output=reshape(decoder_output_matrix,1,k*(depth_of_trellis-L+1)); cumulated_metric=state_metric(1,1); -580- Hướng dẫn giải tập mô function y=bin2deci(x) l=length(x); y=(l-1:-1:0); y=2.^y; y=x*y'; function y=deci2bin(x,l) y = zeros(1,l); i = 1; while x>=0 & i