📄 findfrm.m
字号:
function FrameStart= findfrm(SignalIn, FrameGap, quickrate,zerotime)
%FINDFRM Finds the start of a COFDM frame
% FrameStart = findfrm(SignalIn, FrameGap, quickrate,zerotime)
% Find the approximate starting location
% zerotime : zeroed time of the guard period
% Copyright Eric Lawrey 1997
%
SignalIn = abs(SignalIn); %Envelope detect the signal
%=========================================
% Subsample to find approx start location
%=========================================
index = 1:quickrate:length(SignalIn);
SubSignal = SignalIn(index); %Subsample the signal
SubFilt = filter(ones(1,round(FrameGap/quickrate)),1,SubSignal);
SearchSig1 = SubFilt(round(FrameGap/quickrate):length(SubFilt));
approxstart = min((find(SearchSig1==min(SearchSig1))+...
FrameGap/quickrate)*quickrate-zerotime);
%plot(SearchSig1);
%============================================================
% Narrow down the search to find the exact starting location
%============================================================
Offset = round(approxstart-1.1*FrameGap); %Starting location of accurate search
EnvFilt = filter(ones(1,FrameGap),1,...
SignalIn(Offset:round(approxstart+FrameGap/3)));
%plot(EnvFilt);
%============================================================================
%Find the minimum of the integral ensuring that it is at least one frame time
%before the end of the wave file. (ignore the first symbol period)
%============================================================================
SearchSig = EnvFilt(FrameGap:length(EnvFilt));
minsig = find(SearchSig==min(SearchSig))+FrameGap;
%Calc the expect start of the frame
%Pick the frame start just before the normal starting time to allow for timming
%errors in both directions, i.e. early and late
FrameStart = min(minsig-zerotime+Offset);
CalcStart = FrameStart;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -