📄 kindex.m
字号:
% freq interleaver
% 先求得freq index 'k'
%注意,matlab矩阵元素标号是从1开始的,所以共为1-2048个点
temp(1)=0;
for i_f=2:2048
temp(i_f)=mod((13*temp(i_f-1)+511),2048);
i_f=i_f+1;
end
%产生dn
i_f=1;
j_f=1;
for i_f=1:2048
if (temp(i_f)>=256)&(temp(i_f)<=1023)
dn(j_f)=temp(i_f);
j_f=j_f+1;
elseif (temp(i_f)>=1025)&(temp(i_f)<=1792)
dn(j_f)=temp(i_f);
j_f=j_f+1;
end
i_f=i_f+1;
end
%产生freq index 'k'
for i_k=1:1536
k(i_k)=dn(i_k)-255;
if k(i_k)>769
k(i_k)=k(i_k)-1;
end
i_k=i_k+1;
end
save('k.mat','k');
%现在根据已知的k,找寻一种更简单的freq interleaving的方法
%matrix_k是正变换阵,根据k中的数据,对1536*1536的单位阵施加相应列变换得到
%将待处理的数据右乘matrix_k,根据线性代数的有关理论,即得插值后的新数据
%逆变换时只需再右剩matrix_k的逆矩阵即可
%下面这一块,只要运行一次就好
%先定义空矩阵matrix_k和1536阶单位阵matrix_eye
matrix_k=[];
matrix_eye=eye(1536);
%根据插值表k,对matrix_eye施加相应列变换,构造matrix_k,即为频率插值正变换阵
for i_matrixk=1:1536
matrix_k=[matrix_k,matrix_eye(:,k(i_matrixk))];
end
%求matrix_k的逆矩阵:matrix_k_inv,用来做频率插值的恢复:de_interleaving
matrix_k_inv=inv(matrix_k);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -