📄 detect0.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 + -