📄 jacdec.m
字号:
function x=jacdec(y)
% run - category - length - bsae code length - base code
table=[...
0 1 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2 4 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 4 8 4 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 5 10 5 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 6 12 6 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 7 14 7 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 8 18 10 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0
0 9 25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0
0 10 26 16 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1
1 1 5 4 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 8 6 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
1 3 10 7 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0
1 4 13 9 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0
1 5 16 11 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0
1 6 22 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0
1 7 23 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1
1 8 24 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0
1 9 25 16 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1
1 10 26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0
2 1 6 5 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0
2 2 10 8 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
2 3 13 10 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0
2 4 20 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1
2 5 21 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0
2 6 22 16 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1
2 7 23 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 0
2 8 24 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1
2 9 25 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0
2 10 26 16 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1
3 1 7 6 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
3 2 11 9 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0
3 3 14 11 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0
3 4 20 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0
3 5 21 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1
3 6 22 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0
3 7 23 16 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1
3 8 24 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0
3 9 25 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1
3 10 26 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0
4 1 7 6 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0
4 2 12 10 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
4 3 19 16 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1
4 4 20 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0
4 5 21 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1
4 6 22 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0
4 7 23 16 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1
4 8 24 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0
4 9 25 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1
4 10 26 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0
5 1 8 7 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0
5 2 12 10 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0
5 3 19 16 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1
5 4 20 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0
5 5 21 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1
5 6 22 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0
5 7 23 16 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1
5 8 24 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0
5 9 25 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1
5 10 26 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0
6 1 8 7 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0
6 2 13 11 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
6 3 19 16 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1
6 4 20 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0
6 5 21 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1
6 6 22 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0
6 7 23 16 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1
6 8 24 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0
6 9 25 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1
6 10 26 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0
7 1 9 8 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0
7 2 13 11 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0
7 3 19 16 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1
7 4 20 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0
7 5 21 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1
7 6 22 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0
7 7 23 16 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1
7 8 24 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0
7 9 25 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1
7 10 26 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0
8 1 9 8 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0
8 2 17 15 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
8 3 19 16 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1
8 4 20 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0
8 5 21 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1
8 6 22 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0
8 7 23 16 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1
8 8 24 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0
8 9 25 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1
8 10 26 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0
9 1 10 9 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
9 2 18 16 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1
9 3 19 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
9 4 20 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1
9 5 21 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0
9 6 22 16 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1
9 7 23 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0
9 8 24 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1
9 9 25 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0
9 10 26 16 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1
10 1 10 9 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0
10 2 18 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0
10 3 19 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1
10 4 20 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0
10 5 21 16 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1
10 6 22 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0
10 7 23 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1
10 8 24 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0
10 9 25 16 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1
10 10 26 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0
11 1 10 9 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0
11 2 18 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1
11 3 19 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0
11 4 20 16 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1
11 5 21 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0
11 6 22 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1
11 7 23 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0
11 8 24 16 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1
11 9 25 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0
11 10 26 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1
12 1 11 10 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0
12 2 18 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0
12 3 19 16 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1
12 4 20 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0
12 5 21 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1
12 6 22 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0
12 7 23 16 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1
12 8 24 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
12 9 25 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1
12 10 26 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0
13 1 12 11 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0
13 2 18 16 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1
13 3 19 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0
13 4 20 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1
13 5 21 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0
13 6 22 16 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1
13 7 23 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0
13 8 24 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1
13 9 25 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0
13 10 26 16 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1
14 1 13 12 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0
14 2 18 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0
14 3 19 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1
14 4 20 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0
14 5 21 16 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
14 6 22 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
14 7 23 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1
14 8 24 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0
14 9 25 16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
14 10 26 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0
15 1 17 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
15 2 18 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
15 3 19 16 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
15 4 20 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
15 5 21 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
15 6 22 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0
15 7 23 16 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
15 8 24 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
15 9 25 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
15 10 26 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 0 4 4 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
15 0 12 12 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0];
%y=[0 -122 -253 -1 zeros(1,18) 0 0 0 -1 9 ]
%%y=tobdel(y);
% Start decoding, first decode the prefix then from that get run,cat,code etc..
% Use the same LOGIC as that of dc decoding
N=length(y);
[p,dm1]=size(table);
x=[];
i=1; d=5;tmp=ones(p,1);
tep=i;
while i<=N,
% match y(i) to that of the d-th bit in the table
tmp=tmp.*[table(:,d)==y(i)]; % tmp is a vector of 0 and 1 with 1 indicate a match
if sum(tmp)==1, % narrow down to one symbol, find it
d=5; % reset pointer to columns of table.
row=find(tmp); % Index of non zero i.e 1
run=table(row,1);
cat=table(row,2);
i=tep+table(row,4)-1;
tmp=ones(p,1); % Preset temp vector
if row==161,num=999;
else
num=bin2int(y(i+1:i+cat));
if(~(num>=2^(cat-1) & num<2^cat)),num=-1*bin2int(ones(1,cat)-y(i+1:i+cat));end
end
i=i+cat; % Increment to next prefix
x=[x zeros(1,run) num];
tep=i+1;
else
d=d+1;
end
i=i+1;
end
%x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -