function [de_x] = bcjr(x,g)
a=size(x);
s=a(2)/2;
state_change=getoutput(g);
stable_rate=size(g,2)-1;
path=cell(s,1);
if stable_rate<s
for i=1:stable_rate
if i==1
k=cell(2,6);
k{1,1}=bin2dec(state_change{1,2})+1;
k{2,1}=bin2dec(state_change{1,5})+1;
k{1,2}=gama(x(1),x(2),state_change{1,3},state_change{1,4});
k{2,2}=gama(x(1),x(2),state_change{1,6},state_change{1,7});
k{1,3}='0';
k{2,3}='1';
k{1,4}=gama(x(1),x(2),state_change{1,3},state_change{1,4});
k{2,4}=gama(x(1),x(2),state_change{1,6},state_change{1,7});
path{1,1}=k;
else
k=cell(2^i,6);
temp=path{i-1,1};
for g=1:2^(i-1)
k{2*g-1,1}=bin2dec(state_change{temp{g,1},2})+1;
k{2*g,1} =bin2dec(state_change{temp{g,1},5})+1;
k{2*g-1,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4});
k{2*g,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7});
k{2*g-1,3}=[temp{g,3} '0'];
k{2*g,3}=[temp{g,3} '1'];
k{2*g-1,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4})+temp{g,4};
k{2*g,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7})+temp{g,4};
end
path{i,1}=k;
end
end
end
for i=(stable_rate+1):s+1
k_1=cell(2^(stable_rate+1),6);
temp=path{i-1,1};
for g=1:2^stable_rate
k_1{2*g-1,1}=bin2dec(state_change{temp{g,1},2})+1;
k_1{2*g,1} =bin2dec(state_change{temp{g,1},5})+1;
k_1{2*g-1,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4});
k_1{2*g,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7});
k_1{2*g-1,3}=[temp{g,3} '0'];
k_1{2*g,3}=[temp{g,3} '1'];
k_1{2*g-1,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4})+temp{g,4};%alpha
k_1{2*g,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7})+temp{g,4};
end
for j=1:2^stable_rate
k_1{j,4}=max1(k_1{j,4},k_1{j+2^stable_rate,4});
k_1{j+2^stable_rate,4}=k_1{j,4};
end
path{i,1}=k_1;
end
number=k_1{1,2};
de_x=k_1{1,3};
for m=2:2^stable_rate
if number>k_1{m,2}
number=k_1{m,2};
de_x=k_1{m,3};
end
end
for i=stable_rate:1
if i==1
k=cell(2,4);
k{1,1}=bin2dec(state_change{1,2})+1;
k{2,1}=bin2dec(state_change{1,5})+1;
k{1,2}=gama(x(1),x(2),state_change{1,3},state_change{1,4});
k{2,2}=gama(x(1),x(2),state_change{1,6},state_change{1,7});
k{1,3}='0';
k{2,3}='1';
k{1,4}=gama(x(1),x(2),state_change{1,3},state_change{1,4});
k{2,4}=gama(x(1),x(2),state_change{1,6},state_change{1,7});
path{1,1}=k;
else
k=cell(2^i,4);
temp=path{i-1,1};
for g=1:2^(i-1)
k{2*g-1,1}=bin2dec(state_change{temp{g,1},2})+1;
k{2*g,1} =bin2dec(state_change{temp{g,1},5})+1;
k{2*g-1,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4});
k{2*g,2}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7});
k{2*g-1,3}=[temp{g,3} '0'];
k{2*g,3}=[temp{g,3} '1'];
k{2*g-1,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},3},state_change{temp{g,1},4})+temp{g,4};
k{2*g,4}=gama(x(2*i-1),x(2*i),state_change{temp{g,1},6},state_change{temp{g,1},7})+temp{g,4};
end
path{i,1}=k;
end
end
for i=s+1:(stable_rate+1)
k_1=path{i,1};
k_temp=path{i+1,1};
for g=1:2^stable_rate
if i==s+1
k_1(g,5)=k_1(g,2);
else
a=k_temp
end
end
for j=1:2^stable_rate
k_temp{j,1}=k_1{j,1};
k_temp{j,2}=k_1{j,2};
k_temp{j,3}=k_1{j,3};
k_temp{j,4}=max1(k_1{j,4},k_1{j+2^stable_rate,4});
end
path{i,1}=k_temp;
end
end
bcjr.zip_matlab例程_matlab_
版权申诉
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
pudn01
- 粉丝: 40
- 资源: 4万+