📄 afm_mlpatterngen.m
字号:
function [F,FR] = afm_mlpatternGen(x,Fs,type)
% Extract set of features from PSD within [0, 128Hz].
% x: input signal
% Fs: sampling rate (= 256Hz)
% type: the type of vehicle ('w'--wheeled,'t'--tracked, or 'u'--unknown)
% F1, F2: 2 sets of features and corresponding labels.
% F1: featureDim = 50, with resolution = 20 Hz; thus band of interest is [0, 1000Hz]
% F1: featureDim = 100 (Complex components), with resolution = 20 Hz; thus band of interest is [0, 1000Hz]
% Last update 01/29/02 Marco Duarte - Complex Features added
% ALL FEATURES ARE ZERO-MEAN AND NORMALIZED TO [0,1]
% % downsampling if not 256 Hz
%if Fs ~= 256
% fprintf('WARNING: Fs must be 256 Hz. Now downsample the input signal to Fs = 256 Hz ...');
% x = resample(x,256,Fs);
% Fs = 256;
%end
lenx = length(x);
winlen = 512; % 512 point window
noverlap = 0; % no overlap
NFFT = 512; % NFFT point fft. FreqResln = 9.68 Hz (Fs/NFFT, assume Fs = 4960.32 Hz) % labeling
if type == 'a'
label = [1 0 0 0];
elseif type == 'd'
label = [0 1 0 0];
elseif type == 'h'
label = [0 0 1 0];
elseif type == 'n'
label = [0 0 0 1];
end
start = 0; i = 1;
while start+winlen <= lenx
xseg = detrend(x(start+1:start+winlen),0); % remove mean
% FFT-based PSD
tempx = abs(fft(xseg, NFFT)).^2; % power spectra
Px = tempx(1:NFFT/2)/sum(tempx(1:NFFT/2)); % normalized (w.r.t. energy)FFT-PSD
tempx1 = mean(reshape(Px(1:100),2,50)); % Form F1 (50 features, [0, 1000 Hz]) % avg over every 2 points (=FreqResln*1=20 Hz)
tempx1 = detrend(tempx1,0)/max(abs(detrend(tempx1,0))); % remove mean and normalize to [0 1]
FRtemp(i,:) = [tempx1]; % feature set 1 (F1): 50 features (50 avged spectral lines)
FR(i,:) = [tempx1 label]; %Mag FFT + label
tempy = fft(xseg, NFFT);
Pynorm = 1/sqrt(sum(tempy(1:NFFT/2)'.*conj(tempy(1:NFFT/2)'))');
Py = Pynorm.*tempy(1:NFFT/2);
tempy0 = mean(reshape(Py(1:100),2,50));
tempy0 = detrend(tempy0,0)/max(abs(detrend(tempy0,0)));
F(i,:) = [tempy0 label];
% Comment upto here ----
% F(i,:) = [FRtemp(i,:), FI(i,:)]; %Mag FFT + Imag + label
i = i + 1;
start = start+winlen-noverlap;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -