⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 count.m

📁 该程序描述的是数字电视地面广播中卷积交织部分.因为是卷积交织所以最后结果中出现为的数值表示该值是前一包缓冲数据的数.但针对第一包数据做卷积交织时,这些零位置上最后确实自动补零.
💻 M
字号:
function [cout_pre,cout_post,cout] = Count(B, M);
%
% usage: compute counts during interleaving(B=4,M=2)
% parameters : B--buffer depth; M--number of the buffers
% date : 2007-10-12

if nargin < 2; M = 2;   end;
if nargin < 1; B = 4;   end;

Cin = 1:B*(B-1)*M;
cout1 = zeros (1,B*(B-1)*M);    % 前一数据块空间
cout2 = zeros (1,B*(B-1)*M);    % 后一数据块空间
cout3 = zeros (1,B*(B-1)*M);    
s = B*M-1;
j=1;    max=0;  temp=0;
for i= 1:B*(B-1)*M;
    if (rem(i-1,B) == 0)        % 输出数据分成B个数一组,每一组第一个数交织前后位置没有发生变化.所以照常输出
        cout2(j) = Cin(i);
        cout3(j) = cout2(j);
        begin = Cin(i);         % 存储每一组的第一个数
    else
        q = rem(i-1,B);         % 因为每一组数的地址都是等差数列,所以此处计算当前数据的位置,具体点说就是与每组第一个数的位置关系
        max = begin+B*(B-1)*M;  % 计算等差数列的最大值
        temp = s*q;             % 计算当前数与第一个数应有的差值
        if (begin <= temp)      % 判断从哪一块数据空间读出数据
            cout1(j) = max - temp;
            cout3(j) = cout1(j)-B*(B-1)*M;
        else
            cout2(j) = begin-temp;
            cout3(j) = cout2(j);
        end;
    end;
    j = j+1;
end;

cout_pre = cout1;
cout_post = cout2;
cout = cout3;




        

    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -