📄 uwbmod.m
字号:
function [sys,x0,str,ts] = UWBmod(t,x,u,flag,modType,pulseType,sigPower,tau,Tf,Tc,delta,M,link,xini,bitsPerHop,Ts)
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0,
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 6;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
state=xini;
for k=1:link
[state,nextC]=nextState(state,bitsPerHop);
end
x0 = [state 0]; % State of the register(m=5) and output time hopping unit c
str = []; ts = [0 0];
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys=[];
%%%%%%%%%%
% Update %
%%%%%%%%%%
case 2,
if abs(round(t/Tf)-t/Tf) < 1e-8
[state,nextC]=nextState(x(1:5),bitsPerHop);
x(1:5)=state; x(6)=nextC;
end
sys=x;
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
Ep=1e-3*10^(sigPower/10)*Tf; % Average Pulse Energy
A=sqrt(Ep);
tmod=mod(t,Tf);
switch pulseType,
case 'Gaussian',
if strcmp(modType,'PPM')
sys = gaussValue(tmod, A, x(6)*Tc+u*delta+floor(2*tau/Ts)*Ts,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = gaussValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+tau,tau);
end
case 'Gaussian 1st Derivative',
if strcmp(modType,'PPM')
sys = gauss1stDevValue(tmod, A, x(6)*Tc+u*delta+tau,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = gauss1stDevValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+floor(2*tau/Ts)*Ts,tau);
end
case 'Gaussian 2nd Derivative',
if strcmp(modType,'PPM')
sys = scholtzValue(tmod, A, x(6)*Tc+u*delta+floor(2*tau/Ts)*Ts,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = scholtzValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+tau,tau);
end
case 'Manchester',
if strcmp(modType,'PPM')
sys = manchesterValue(tmod, A, x(6)*Tc+u*delta+floor(2*tau/Ts)*Ts,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = manchesterValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+tau,tau);
end
case 'Sine',
if strcmp(modType,'PPM')
sys = sineValue(tmod, A, x(6)*Tc+u*delta+floor(2*tau/Ts)*Ts,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = sineValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+tau,tau);
end
case 'Rectangle',
if strcmp(modType,'PPM')
sys = rectangleValue(tmod, A, x(6)*Tc+u*delta+floor(2*tau/Ts)*Ts,tau);
elseif strcmp(modType,'PAM')
dhalf=sqrt(3*Ep/(M^2-1));
sys = rectangleValue(tmod, dhalf*(2*u-(M-1)),x(6)*Tc+tau,tau);
end
otherwise
error('Unsupported Pulse Type');
end
%%%%%%%%%%%%%%%%%%%%%%%
% 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 + -