mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-07-15 21:32:29 +10:00
updated ui added new features
This commit is contained in:
+38
@@ -0,0 +1,38 @@
|
||||
% doppler_spread.m
|
||||
% David Rowe Jan 2016
|
||||
%
|
||||
% Returns gausssian filtered doppler spreading function samples for HF channel
|
||||
% modelling. Used PathSim technical guide as a reference - thanks Moe!
|
||||
|
||||
function [spread_FsHz states] = doppler_spread(dopplerSpreadHz, FsHz, Nsam)
|
||||
|
||||
% start with low Fs so we can work with a reasonable filter length
|
||||
|
||||
sigma = dopplerSpreadHz/2;
|
||||
lowFs = ceil(10*dopplerSpreadHz);
|
||||
Ntaps = 100;
|
||||
Nsam_low = ceil(Nsam*lowFs/FsHz + Ntaps); % fill filter memory
|
||||
|
||||
% generate gaussian freq response and design filter
|
||||
|
||||
x = 0:lowFs/100:lowFs/2;
|
||||
y = (1/(sigma*sqrt(2*pi)))*exp(-(x.^2)/(2*sigma*sigma));
|
||||
b = fir2(Ntaps-1, x/(lowFs/2), y);
|
||||
|
||||
% generate the spreading samples
|
||||
|
||||
spread_lowFs = filter(b,1,randn(1,Nsam_low) + j*randn(1,Nsam_low));
|
||||
|
||||
% resample to FsHz, scaling for desired spreadFreqHz
|
||||
|
||||
spread_FsHz = resample(spread_lowFs(Ntaps+1:Nsam_low), FsHz, lowFs);
|
||||
assert(length(spread_FsHz) >= Nsam);
|
||||
|
||||
% return some states for optional unit testing
|
||||
states.x = x;
|
||||
states.y = y;
|
||||
states.b = b;
|
||||
|
||||
endfunction
|
||||
|
||||
|
||||
Reference in New Issue
Block a user