資源簡介
本程序為matlab編寫。主要是寫了64QAM調制的軟判決譯碼。并且譯碼輸出可直接輸入到 turbo譯碼器 。另外也附加了64QAM的編碼和硬判決。

代碼片段和文件信息
function?y?=?De_64QAM(input)
%實現64QAM解調?
I_length=length(input);
input_modu=input*sqrt(42);
QAM_input_I?=?real(input_modu);
QAM_input_Q?=?imag(input_modu);
output_frame?=?zeros(1length(input)*6);
%實部解調判決映射部分
for?l1=1:I_length
????if(abs(QAM_input_I(l1))>6)
????????if((QAM_input_I(l1)<0))
????????????QAM_input_I(l1)=-7;
????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[111];
????????else
????????????QAM_input_I(l1)=7;
????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[011];
????????end;
????????
????else
????????if(abs(QAM_input_I(l1))>4?&&?abs(QAM_input_I(l1))<=6)
????????????if((QAM_input_I(l1)<0))
????????????????QAM_input_I(l1)=-5;
????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[110];
????????????else
????????????????QAM_input_I(l1)=5;
????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[010];
????????????end;
????????????
????????else
????????????if(abs(QAM_input_I(l1))>2?&&?abs(QAM_input_I(l1))<=4)
????????????????if((QAM_input_I(l1)<0))
????????????????????QAM_input_I(l1)=-3;
????????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[100];
????????????????else
????????????????????QAM_input_I(l1)=3;
????????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[000];
????????????????end;
????????????else
????????????????if((QAM_input_I(l1)<0))
????????????????????QAM_input_I(l1)=-1;
????????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[101];
????????????????else
????????????????????QAM_input_I(l1)=1;
????????????????????output_frame(6*(l1-1)+1:2:6*(l1-1)+5)=[001];
????????????????end;
????????????end;
????????end;
????end;
end;
%虛部解調判決映射部分?
for?l1=1:I_length
????if(abs(QAM_input_Q(l1))>6)
????????if((QAM_input_Q(l1)<0))
????????????QAM_input_Q(l1)=-7;
????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[111];
????????else
????????????QAM_input_Q(l1)=7;
????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[011];
????????end;
????????
????else
????????if(abs(QAM_input_Q(l1))>4?&&?abs(QAM_input_Q(l1))<=6)
????????????if((QAM_input_Q(l1)<0))
????????????????QAM_input_Q(l1)=-5;
????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[110];
????????????else
????????????????QAM_input_Q(l1)=5;
????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[010];
????????????end;
????????????
????????else
????????????if(abs(QAM_input_Q(l1))>2?&&?abs(QAM_input_Q(l1))<=4)
????????????????if((QAM_input_Q(l1)<0))
????????????????????QAM_input_Q(l1)=-3;
????????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[100];
????????????????else
????????????????????QAM_input_Q(l1)=3;
????????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[000];
????????????????end;
????????????else
????????????????if((QAM_input_Q(l1)<0))
????????????????????QAM_input_Q(l1)=-1;
????????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[101];
????????????????else
????????????????????QAM_input_Q(l1)=1;
????????????????????output_frame(6*(l1-1)+2:2:6*(l1-1)+6)=[00
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3124??2010-05-05?09:57??De_64QAM_hard.m
?????文件???????2929??2010-05-05?09:56??De_64QAM_Soft.m
?????文件????????691??2010-05-05?09:56??modulate_64QAM.m
-----------?---------??----------?-----??----
?????????????????6744????????????????????3
- 上一篇:MT4持倉助手v1.3
- 下一篇:matlab實現newton迭代法
評論
共有 條評論