Kênh truyền và đánh giá chất lượng kênh truyền
242
Trong ví dụ trên hàm biterr trả về số bit lỗi và tỷ lệ lỗi bit khi so sánh hai chuỗi dữ liệu x và
z. Một cách tổng quát, hàm này có thể so sánh hai ma trận số nguyên bất kỳ có cùng kích
thước. Ngoài hai thông số chính là hai ma trận dữ liệu, còn có thêm hai thông số tuỳ chọn:
o
[num,ratio]
= biterr
(...,K)
so sánh hai ma trận với K là số bit để biểu diễn một
phần tử trong ma trận. K phải lớn hơn hoặc bằng số bit tối thiểu để biểu diễn phần tử lớn nhất
của ma trận.
o
[num,ratio]
= biterr
(...,flag)
dùng chuỗi ký tự flag để xác định phương thức so
sánh. Nếu
flag = ‘column-wise’
thì hàm biterr sẽ thực hiện so sánh theo từng cột và
xuất kết quả dưới dạng vector hàng. Nếu
flag = ‘row-wise’
thì hàm này sẽ thực hiện so
sánh theo từng cột và xuất kết quả dưới dạng vector cột. Nếu
flag = ‘overall’
, hàm sẽ
thực hiện so sánh trên toàn bộ ma trận và như vậy kết quả là một vô hướng.
o
[num,ratio,individual]
= biterr
(...)
cho phép trả về ma trận individual, trong
đó mỗi phần tử của nó là số bit lỗi giữa hai phần tử tương ứng của hai ma trận so sánh.
Ví dụ:
>> A = [1 2 3; 1 2 2];
>> B = [1 2 0; 3 2 2];
>> [Num,Rat]=biterr(A,B,3)
Num =
3
Rat =
0.1667
>> [Num,Rat,Ind] = biterr(A,B,3,'column-wise')
Num =
1 0 2
Rat =
0.1667 0 0.3333
Ind =
0 0 2
1 0 0
Hàm symerr tương tự như hàm biterr chỉ khác ở chỗ so sánh các ký hiệu thay vì các bit.
Ví dụ sau đây minh hoạ sự khác nhau giữa tỷ lệ bit lỗi và tỷ lệ ký hiệu lỗi.
>> a = [1 2 3]'; b = [1 4 4]';
>> format rat % Hiển thị dạng tỷ số.
>> [snum,srate] = symerr(a,b
)
snum =
2
srate =
2/3
>> [bnum,brate] = biterr(a,b)
bnum =
5