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

📄 gsmk.m

📁 差分检测的程序
💻 M
字号:
function gsmk;
N = 32;
BT = 0.5;
Amp = 1;
num_bits = 10;
OSR = N;
Tb = 3.692e-6;
Psig = (Amp^2/2)*N;
for n= 1:18
    SNR(n) = n-1;
    Pn = Psig/(10^(SNR(n)/10));
    sigma(n) = sqrt(Pn);
end
for n = 1:18
    errors = 0;
    totalsymbols = 0;
    window = [-1.5:1/N:1.5];
%     coeff = errfunc(window,BT);
    [g,q] = ph_g(Tb,OSR,BT);
%     coeff = [g,0];
    coeff = g;
    while(errors<round(10000*(0.68)^(n-1)))
        tx_data = round(rand(1,num_bits));
%         tx_data = ones(1,num_bits);
%         tx_data = zeros(1,num_bits);
%         NRZ = ((rand(1,num_bits)>0.5)-0.5)*2;
        NRZ = ((tx_data>0.5)-0.5)*2;   %1变到1,0变到-1
        clear impulse
        impulse(1:N:num_bits*N) = [NRZ];
        phase = filter(coeff,1,impulse);
        B = 1/(2*N);
        A = [1 -1];
        phi =filter(B,A,phase);
        I = cos(2*pi.*phi);
        Q = sin(2*pi.*phi);
        fidI = fopen('I.csv','w');
        fidQ = fopen('Q.csv','w');
        fprintf(fidI,'GMSK data for generating I\n');
        fprintf(fidI,'GMSK data for generating Q\n');
        for ii = 1:1:length(I)
            fprintf(fidI,'%d, %f\n',ii,I(ii));
            fprintf(fidQ,'%d, %f\n',ii,Q(ii));
        end
        fclose(fidI);
        fclose(fidQ);
        noiseI = normrnd(0,sigma(n),1,length(I))./20;
        noiseQ = normrnd(0,sigma(n),1,length(Q))./20;
%          noiseI = 0; noiseQ = 0;  %没有噪声的时候只有最后两个解错
        In = I + noiseI;
        Qn = Q + noiseQ;
        z = In + Qn*j;
         [symbols demod] = detect0(z,N);
%         symbols-NRZ
%         xor(symbols(2:length(symbols)),NRZ(1:length(NRZ)-3)) % noiseI = 0; noiseQ = 0;
%         xor(symbols(2:length(symbols)),NRZ)   % noiseI = 0; noiseQ = 0;
%         xor(symbols(2:length(symbols)),NRZ(1:length(NRZ)))   % 有噪声
%          [symbols1 demod1] = trN2(z,N);
%         xor(symbols,symbols1);
        s1 = length(symbols);
        errors = errors + sum(rem((symbols(4:sl)>0)+(NRZ(1:sl-3)>0),2));
        totalsymbols = totalsymbols + length(symbols(4:s1));
    end
    prob(n) = errors/totalsymbols;
    trial1 = fopen('tr8b.txt','a');
    fprintf(trial1,'%d %1.10f\n',SNR(N),prob(n));
    fclose(trial1);
end

%比较了 symbols 与 NRZ 发现 NRZ最后数3个不用,symbols第一个不用,可以解读

⌨️ 快捷键说明

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