📄 uwbdetection.m
字号:
function [sys,x0,str,ts] = uwbDetection(t,x,u,flag,threshold,tau,Ts,Ep)
global UWB_SIG_DETECT_TIME;
global UWB_SIG_DETECT_ON;
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0,
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = floor(2*tau/Ts)+1;
sizes.NumOutputs = 0;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = zeros(floor(2*tau/Ts)+1,1); % State of the state register and initial c0, m=5
str = []; ts = [0 0];
UWB_SIG_DETECT_TIME=0;
UWB_SIG_DETECT_ON=0;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys=[];
%%%%%%%%%%
% Update %
%%%%%%%%%%
case 2,
% coefficient=sum(x.*scholtzValue([-tau:Ts:tau]',1,0,tau))*Ts/sqrt(Ep)*100;
% fprintf('Time=%3.3f ns, Coefficient=%3.3f\n',(t-(floor(tau/Ts)+1)*Ts)*1e9,coefficient);
if UWB_SIG_DETECT_ON==0
coefficient=sum(x.*scholtzValue([-tau:Ts:tau]',1,0,tau))*Ts/sqrt(Ep)*100;
if( coefficient>threshold )
UWB_SIG_DETECT_ON=1; UWB_SIG_DETECT_TIME=t-(floor(tau/Ts)+1)*Ts;
fprintf('UWB signal Detected. Time=%3.3f ns, Coefficient=%3.3f\n',(t-(floor(tau/Ts)+1)*Ts)*1e9,coefficient);
end
end
l=length(x);
x(1:l-1)=x(2:l);x(l)=u;
sys=x;
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
sys=[];
%%%%%%%%%%%%%%%%%%%%%%%
% GetTimeOfNextVarHit %
%%%%%%%%%%%%%%%%%%%%%%%
case 4,
sys=[];
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case 9,
sys=[];
%%%%%%%%%%%%%%%%%%%%
% Unexpected flags %
%%%%%%%%%%%%%%%%%%%%
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -