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

📄 uwb_analysis .m

📁 有关UWB的matlab仿真程序,对一些初学者比较有用
💻 M
字号:
%  Title: UWB Link Analysis 
%   Author: J C 
%   Summary: Plots time and frequency domains of UWB PPM monocycles and doublets. 
%   MATLAB Release: R13 
%   Description: This m file plots the time and frequency domain of UWB PPM
%   (pulse position modulated) waveforms(monocycles and doublets) with different 
%   pulse recurring frequency (PRF)and information rates. 

% UWB-Run from editor debug(F5)-PPM(pulse position modulation) of
% UWB monocycle and doublet waveforms.
% This m file plots the time and frequency waveforms for PPM 1st and 2nd derivative 
% equations used in UWB system analysis. Fudge factors are required to
% correct for inaccuracies in the 1st and 2nd derivative equations.
% Tail to tail on the time wave forms must be considered as the actual pulse width. 
% 7*PW1 has about 99.9% of the signal power. The frequency spreads and center 
% frequencies(fc=center of the spread)are correct as you can verify(fc~1/pw1).
% Change pw(fudge factor)and t for other entered(pw1) pulse widths and
% zooming in on the waveforms. See SETUP at end of program
%================================================
pw1=.5e-9;  %pulse width in nanosec,change to desired width
pw=pw1/2.5; %Fudge factor for inaccurate PWs(approx. 4-5 for 1st der. and
%approx. 2-3 for 2nd der.)
Fs=100e9;   %sample frequency
Fn=Fs/2;    %Nyquist frequency
t=-1e-9:1/Fs:1e-9;  %time vector sampled at Fs Hertz. zoom in/out using (-1e-9:1/Fs:xxxx)
A=1;
%================================================ 
% EQUATIONS
%================================================
%y=A*(t/pw).*exp(-(t/pw).^2);%1st derivative of Gaussian pulse=Gaussian monocycle
y =A*(1 - 4*pi.*((t)/pw).^2).* exp(-2*pi.*((t)/pw).^2);%2nd derivative of Gaussian
%pulse=doublet(two zero crossings) 
%================================================
%   This series of pulses sets the pulse recurring frequency(PRF)
%   at 400MHz(waveform repeats every 2.5e-9 sec)and a
%   modulation bit stream(info bit rate=200MHz) of 0 1 0 1 0 (5 pulses,can add more)
%   using 0.2e-9 as the time delay PPM where a delay = a 0 bit and no delay = a 1 bit. 
%   One could expand the # of pulses and modulate for a series of
%   000000111111000000111111000000 which would give a lower bit rate. You could just
%   change the PRF also. For loops or some other method could be used to do this but for
%   myself, I would get lost. This is a brute force method and I can easily copy and paste.
%   I will leave that for more energetic souls. Since we basically have the transmitter
%   implemented it's time to move on to the correlation receiver design 
%   and and add interference, multipath and noise with BER capability to
%   see if we can demodulate and get 01010 bits out at the 200MHz information bit rate. As
%   someone once said a journey of a thousand miles requires taking a small first step. 
% 
%==================================================
% 1ST DERIVATIVE MONOCYCLE(PPM WITH 5 PULSES)
%==================================================
%yp=y+ ...
%A*((t-2.5e-9-.2e-9)/pw).*exp(-((t-2.5e-9-.2e-9)/pw).^2)+A*((t-5e-9)/pw).*exp(-((t-5e-9)/pw).^2)+ ...
%A*((t-7.5e-9-.2e-9)/pw).*exp(-((t-7.5e-9-.2e-9)/pw).^2)+A*((t-10e-9)/pw).*exp(-((t-10e-9)/pw).^2);
%==================================================
% 2ND DERIVATIVE DOUBLET(PPM WITH 5 PULSES)
%==================================================
yp=y+ ...
A*(1-4*pi.*((t-2.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-2.5e-9-.2e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-5.0e-9)/pw).^2).*exp(-2*pi.*((t-5.0e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-7.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-7.5e-9-.2e-9)/pw).^2)+ ...
A*(1-4*pi.*((t-10e-9)/pw).^2).*exp(-2*pi.*((t-10e-9)/pw).^2);
%==================================================
% FFT
%==================================================
y=yp;
NFFY=2.^(ceil(log(length(y))/log(2)));
FFTY=fft(y,NFFY);%pad with zeros
NumUniquePts=ceil((NFFY+1)/2); 
FFTY=FFTY(1:NumUniquePts);
MY=abs(FFTY);
MY=MY*2;
MY(1)=MY(1)/2;
MY(length(MY))=MY(length(MY))/2;
MY=MY/length(y);
f=(0:NumUniquePts-1)*2*Fn/NFFY;
%===================================================
% PLOTS
%===================================================
subplot(2,2,1); plot(t,y);xlabel('TIME');ylabel('AMPLITUDE');
grid on;
%axis([-1e-9,4e-9 -1 1])
subplot(2,2,2); plot(f,MY);xlabel('FREQUENCY');ylabel('AMPLITUDE');
%axis([0 10e9 0 .1]);%zoom in/out
grid on;
subplot(2,2,3); plot(f,20*log10(MY));xlabel('FREQUENCY');ylabel('20LOG10=DB');
%axis([0 20e9 -120 0]);
grid on;


%SETUP
%Enter desired pulse width in pw1(.5e-9).
%Change t=-1e-9:1/Fs:(xxxx) to 1e-9.
%Press F5 or run.
%With waveform in plot 2,2,1, set pulse width with fudge factor to .5e-9
%using #s corresponding to chosen waveform. Set from tail to tail.
%Change t=-1e-9:1/Fs:(xxx) to something like 20e-9.Zoom out. I would
%comment in all plot axis and use them for zooming in and out.
%Press F5 and observe waveforms. Print waveforms to compare with next set of
%wave forms.
%Pick another waveform by commenting out existing waveform and repeat as above.

%When you compare the waveforms you will see that the second derivative
%doublet has a center frequency in the spread twice that of the first
%derivative monocycle.
%You would expect this on a second derivative. Picking a doublet waveform
%for transmission (by choice of UWB antenna design) pushes the fc center frequency 
%spread out by (two) allowing relief from the difficult design of narrower pulse
%generating circuits in transmitters and receivers. If you chose a monocycle, you would
%need to design your pulse circuits with a much narrower(factor of two)pulse width to
%meet the tough FCC spectral mask from ~3 to 10GHz at-40 DB. I would guess a
%pulse width of ~ 0.4 to 0.45 nanosec using a doublet at the proper amplitude(A) 
%would meet the requirements.
 
%You can zoom in on the waveforms of plot 2,2,1 to see the PPM
%delays generating 01010. Use axis on plot 2,,2,1 for better
%zooming.Comment in the axis.





⌨️ 快捷键说明

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