📄 hermite_pulse.m
字号:
% 一般来说alpha都选1ns,最大不能超过chip值
function hermite_pulse(alphamin,n)
% -------------------------------------------
% Step Zero - Input parameters and Initialize
% -------------------------------------------
A=1; % pulse amplitude [V]
smp = 1024; % number of samples
Tmin = -1e-9; % Lower time interval limit
Tmax = 1e-9; % Upper time interval limit
alpha =alphamin; % Initialization of the shape
% factor
t=linspace(Tmin,Tmax,smp); % Initialization of the time
% axis
%talpha=t/alpha; (t/alpha)
%etalpha=exp(-(talpha.^2)/2);
%syms pulse;
% --------------------------------------------
% Step One - Pulse waveform in the time domain
% --------------------------------------------
% Pulse waveform definition
switch n
case(0)
pulse=A*exp(1/4*(t/alpha).^2).*exp(-1/2*(t/alpha).^2)
case(1)
pulse= A*exp(1/4*(t/alpha).^2).*(t/alpha).*exp(-1/2*(t/alpha).^2)
case(2)
pulse=A*exp(1/4*(t/alpha).^2).*(-exp(-1/2*(t/alpha).^2)+(t/alpha).^2.*exp(-1/2*(t/alpha).^2))
case(3)
pulse=-A*exp(1/4*(t/alpha).^2).*(3*(t/alpha).*exp(-1/2*(t/alpha).^2)-(t/alpha).^3.*exp(-1/2*(t/alpha).^2))
case(4)
pulse=A*exp(1/4*(t/alpha).^2).*(3*exp(-1/2*(t/alpha).^2)-6*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)+(t/alpha).^4.*exp(-1/2*(t/alpha).^2))
case(5)
pulse=-A*exp(1/4*(t/alpha).^2).*(-15*(t/alpha).*exp(-1/2*(t/alpha).^2)+10*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)-(t/alpha).^5.*exp(-1/2*(t/alpha).^2))
case(6)
pulse=A*exp(1/4*(t/alpha).^2).*(-15*exp(-1/2*(t/alpha).^2)+45*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)-15*(t/alpha).^4.*exp(-1/2*(t/alpha).^2)+(t/alpha).^6.*exp(-1/2*(t/alpha).^2))
case(7)
pulse=-A*exp(1/4*(t/alpha).^2).*(105*(t/alpha).*exp(-1/2*(t/alpha).^2)-105*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)+21*(t/alpha).^5.*exp(-1/2*(t/alpha).^2)-(t/alpha).^7.*exp(-1/2*(t/alpha).^2))
case(8)
pulse=A*exp(1/4*(t/alpha).^2).*(105*exp(-1/2*(t/alpha).^2)-420*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)+210*(t/alpha).^4.*exp(-1/2*(t/alpha).^2)-28*(t/alpha).^6.*exp(-1/2*(t/alpha).^2)+(t/alpha).^8.*exp(-1/2*(t/alpha).^2))
case(9)
pulse=-A*exp(1/4*(t/alpha).^2).*(-945*(t/alpha).*exp(-1/2*(t/alpha).^2)+1260*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)-378*(t/alpha).^5.*exp(-1/2*(t/alpha).^2)+36*(t/alpha).^7.*exp(-1/2*(t/alpha).^2)-(t/alpha).^9.*exp(-1/2*(t/alpha).^2))
case(10)
pulse=A*exp(1/4*(t/alpha).^2).*(-945*exp(-1/2*(t/alpha).^2)+4725*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)-3150*(t/alpha).^4.*exp(-1/2*(t/alpha).^2)+630*(t/alpha).^6.*exp(-1/2*(t/alpha).^2)-45*(t/alpha).^8.*exp(-1/2*(t/alpha).^2)+(t/alpha).^10.*exp(-1/2*(t/alpha).^2))
case(11)
pulse=-A*exp(1/4*(t/alpha).^2).*(10395*(t/alpha).*exp(-1/2*(t/alpha).^2)-17325*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)+6930*(t/alpha).^5.*exp(-1/2*(t/alpha).^2)-990*(t/alpha).^7.*exp(-1/2*(t/alpha).^2)+55*(t/alpha).^9.*exp(-1/2*(t/alpha).^2)-(t/alpha).^11.*exp(-1/2*(t/alpha).^2))
case(12)
pulse=A*exp(1/4*(t/alpha).^2).*(10395*exp(-1/2*(t/alpha).^2)-62370*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)+51975*(t/alpha).^4.*exp(-1/2*(t/alpha).^2)-13860*(t/alpha).^6.*exp(-1/2*(t/alpha).^2)+1485*(t/alpha).^8.*exp(-1/2*(t/alpha).^2)-66*(t/alpha).^10.*exp(-1/2*(t/alpha).^2)+(t/alpha).^12.*exp(-1/2*(t/alpha).^2))
case(13)
pulse=-A*exp(1/4*(t/alpha).^2).*(-135135*(t/alpha).*exp(-1/2*(t/alpha).^2)+270270*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)-135135*(t/alpha).^5.*exp(-1/2*(t/alpha).^2)+25740*(t/alpha).^7.*exp(-1/2*(t/alpha).^2)-2145*(t/alpha).^9.*exp(-1/2*(t/alpha).^2)+78*(t/alpha).^11.*exp(-1/2*(t/alpha).^2)-(t/alpha).^13.*exp(-1/2*(t/alpha).^2))
case(14)
pulse=A*exp(1/4*(t/alpha).^2).*(-135135*exp(-1/2*(t/alpha).^2)+945945*(t/alpha).^2.*exp(-1/2*(t/alpha).^2)-945945*(t/alpha).^4.*exp(-1/2*(t/alpha).^2)+315315*(t/alpha).^6.*exp(-1/2*(t/alpha).^2)-45045*(t/alpha).^8.*exp(-1/2*(t/alpha).^2)+3003*(t/alpha).^10.*exp(-1/2*(t/alpha).^2)-91*(t/alpha).^12.*exp(-1/2*(t/alpha).^2)+(t/alpha).^14.*exp(-1/2*(t/alpha).^2))
case(15)
pulse=-A*exp((t/alpha).^2/4).*(2027025*(t/alpha).*exp(-1/2*(t/alpha).^2)-4729725*(t/alpha).^3.*exp(-1/2*(t/alpha).^2)+2837835*(t/alpha).^5.*exp(-1/2*(t/alpha).^2)-675675*(t/alpha).^7.*exp(-1/2*(t/alpha).^2)+75075*(t/alpha).^9.*exp(-1/2*(t/alpha).^2)-4095*(t/alpha).^11.*exp(-1/2*(t/alpha).^2)+105*(t/alpha).^13.*exp(-1/2*(t/alpha).^2)-(t/alpha).^15.*exp(-1/2*(t/alpha).^2))
otherwise
disp('大哥您输入的阶数忒高!')
end
% -------------------------------------------
% Step Two - Graphical output
% -------------------------------------------
% Time Domain Representation
figure(1);
subplot(1,2,1);
PT=plot(t,pulse);
set(PT,'LineWidth',[2]);
AX=gca;
set(AX,'FontSize',12);
T=title('Hermite时域波形');
set(T,'FontSize',14);
X=xlabel('时间 [s]');
set(X,'FontSize',14);
Y=ylabel('幅度');
set(Y,'FontSize',14);
%axis([-0.5 0.5 -0.05 0.05]);
% Frequency Domain Representation
dt = (Tmax-Tmin) / smp; % sampling period
fs = 1/dt % sampling frequency
N = smp; % number of samples (i.e.
% size of the FFT)
df = 1 / (N * dt); % fundamental frequency
X=fft(pulse); % double-sided MATLAB
% amplitude spectrum
X=X/N; % conversion from MATLAB
% spectrum to Fourier
% spectrum
E = fftshift(abs(X).^2/(df^2)); % DOUBLE-SIDED ESD
Ess = 2*E((N/2+1):N); % SINGLE-SIDED ESD
%figure(2);
subplot(1,2,2);
positivefrequency=linspace(0,(fs/2),N/2);
PF=semilogy(positivefrequency,Ess);
set(PF,'LineWidth',[2]);
AX=gca;
set(AX,'FontSize',12);
T=title('Hermite频域波形');
set(T,'FontSize',14);
X=xlabel(' 频率 [Hz]');
set(X,'FontSize',14);
Y=ylabel('ESD [(V^2)*sec/Hz]');
set(Y,'FontSize',14);
%axis([0 15e9 1e-40 0]);
% text(7.5e9, 1e-25, alphabehaviour,...
% 'BackgroundColor', [1 1 1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -