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

📄 cp4fskdemod.m

📁 一个仿真测试4FSK信号的matlab环境GUI程序。可以查看基带IQ波形、眼图、星座图。并可以仿真高斯白噪声、瑞利衰减对信号的影响。
💻 M
字号:
function BitStream = cp4fskdemod(I_Symbol,Q_Symbol)
% ---------------------------------------------------------------
% Continue Phase Four level FSK demodulation Program,used for DMR,ETSI

% Written by zhengliangde, HYT Co.,LTD. 2005.11.4
% Contact: zhld_308@163.com
% ---------------------------------------------------------------
nSamp     = 8;          % number of samples per symbol
Fd        = 4800;       % symbol rate
Fs        = nSamp*Fd;   % sample rate
pi_Def    = 3.1416;     % pi define
freq_sep  = 648;        % frequency deviation
M         = 4;          % four level fsk

if Fs<freq_sep*(M-1)
    error('The max Frequency must be less than or equal to Fs/2.');
end

freqs = [-3 -1 1 3] * freq_sep;
t = [0 : 1/Fs : (nSamp-1)/Fs]';
phase = pi_Def*t*freqs;
tones = exp(-j*phase);

% ----------convert to column vector -----------
I_Symbol = I_Symbol(:);
Q_Symbol = Q_Symbol(:);

for iSym=1:length(I_Symbol)/nSamp
    yTemp = I_Symbol((iSym-1)*nSamp+1:iSym*nSamp) + ...
        j*Q_Symbol((iSym-1)*nSamp+1:iSym*nSamp);
    % Replicate the received signal to multiply with the M tones
    yTemp = yTemp(:, [1;1;1;1]);
    yTemp = yTemp.*tones;
    yInt = Intgrt_and_Dump(yTemp,nSamp);
    yMag = abs(yInt);
    [maxVal,maxIndx] = max(yMag,[],2);   % the max one of one row
    Symbol(iSym) = maxIndx - 1;
end

% -------  Symbol to bitstream --------
for k=1:length(Symbol)
    BitStream(2*k-1) = floor(Symbol(k)/2);
    BitStream(2*k) = mod(Symbol(k),2);
end


function y = Intgrt_and_Dump(x,nSamp)
% Intgrt_and_Dump Integrate and dump.

[xRow, xCol] = size(x);
x = mean(reshape(x, nSamp, xRow*xCol/nSamp), 1);
y = reshape(x, xRow/nSamp, xCol);

⌨️ 快捷键说明

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