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

📄 detect0.m

📁 差分检测的程序
💻 M
字号:
function [samples, demod] = detect0(z,N)
%/////////
% N=4;
% % z=[1 1 1 1 z 1];
% % z=[0 0 0 0 z 1];
%  z=[1 1 1 1 z 0];
% z = [z round(rand(1,3*N))];
 z = [z zeros(1,3*N)]; %和 Z=[Z zeros(1,3*N)]; 作用一样  作用于time = 2*N+1;
% z = [z zeros(1,2*N)];  % 不合理 
%/////////
num = 1;
time = 2*N+1;
% time = 1*N+1;         %不成功
T = N;
mu = 0.02;
error(1) = 0;
shift = 0;
timing_error = 0;
totsteps = 0;
B = fir1(32,0.18);
% B = fir1(33,0.18);
I = real(z);
Q = imag(z);
yI = filter(B,1,I);
yQ = filter(B,1,Q);
Z = yI + yQ*j;
% Z=z;
% Z=[Z zeros(1,2*N)];   %在这里添3N个数 就能正好解读  其实还是解不对,最后两个不一样
                      %也就是说,第一个和最后两个不能要
% Z=[zeros(1,N) Z zeros(1,N)]; %这种的效果不明显
% Z=[Z zeros(1,3*N)];  %把num = num+1;移动到计算samples下面,只有最后两个不能解读正确了
demod(1:N) = imag(Z(1:N));
demod(N+1:length(Z)) = imag(Z(N+1:length(Z)).*conj(Z(1:length(Z)-N)));
while(time <=length(Z)-T)

samples(num) = (demod(time) >0)*2-1;
num = num+1;
error(num) = (sign(demod(fix(time)))-sign(demod(fix(time-T))))*(demod(time-T/2));
shift = error(num)*N*mu;
steps = fix(shift);
time = time + T-steps;
end
%*********************在链路中用**************************** 
% a1=samples(3:length(samples));
% a1 = (1 - a1)/2;
% a1 = [1 a1];
% L = length(a1);
% rx_burst_t = ones(1,L);
% for step = 2:L
%      rx_burst_t(step) = xor(rx_burst_t(step-1),a1(step));
% end
%  rx_burst_t = rx_burst_t(2:L);
% samples = rx_burst_t;
%***********************************************************

⌨️ 快捷键说明

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