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

📄 afm_mlpatterngen.m

📁 传感器网络探测声信号通过特征提取进行目标设别分类
💻 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 + -