频域特征提取

  • A_barry218
    了解作者
  • matlab
    开发工具
  • 109.1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2022-05-18 09:09
    上传日期
频域的特征提取,很直观的反应信息,帮助进行数据处理
频域特征提取.zip
  • samples2.mat
    109.9KB
  • features_frequency_domain.m
    4.4KB
内容介绍
clear clc %前几节将了时域特征提取,傅里叶变换,其作用将时域信号变换到频域下 %这节讲频域特征提取 load('samples2.mat') %所有样本,二维矩阵,时域样本 %每列表示:单个样本的采样长度,单个样本采集时长为2.5 s,采样频率为Fs =20 kHz %所以单个样本的采样长度为2.5*20k =50000 %第一列为第1个样本-状态1,第二列为第2个样本-状态2 features = table; %特征表 sample_number = 2; %sample_number为样本个数 sample_length = 1:1:50000; %sample_length为单个样本的采样长度 Fs = 20000; %采样频率Fs=20 KHz t = (1:1:50000)/Fs; %采样时间t=2.5s b = (1:24000); %实际区间 P1_length = 12000; frequency_samples= zeros(P1_length,sample_number);%把每个样本samples2都从时域通过傅里叶变换到频域 %frequency_samples为所有样本的频域数据幅值,同样为矩阵 %行数为P1_length,列大小即为样本个数 figure(1) subplot(211) plot(t(b),samples2(b,1)) xlabel('时间/s') ylabel('时域幅值/A') title('第1个样本-状态1') %第1个样本-状态1的波形 subplot(212) plot(t(b),samples2(b,2)) xlabel('时间/s') ylabel('时域幅值/A') title('第2个样本-状态2') %第2个样本-状态2的波形 Fs = 20000; x = samples2(b,1); L = length(x); y = fft(x); f = (0:L-1)*Fs/L; y = y/L; figure(2) subplot(411) plot(t(b),samples2(b,1)) xlabel('时间/s') ylabel('时域幅值/A') title('第1个样本-状态1') subplot(412) plot(f,abs(y)) fshift = (-L/2:L/2-1)*Fs/L; yshift = fftshift(y); subplot(413) plot(fshift,abs(yshift)) P2 = abs(fft(x)/L); P1 = P2(1:L/2); P1(2:end-1) = 2*P1(2:end-1); fnew = (0:(L/2-1))*Fs/L; subplot(414) plot(fnew,P1) figure(3) plot(fnew,P1) xlim([0 100]) ylabel('频域幅值','FontSize',25) xlabel('频率/Hz','FontSize',25) % title('第1个样本-状态1') Fs = 20000; x = samples2(b,2); L = length(x); y = fft(x); f = (0:L-1)*Fs/L; y = y/L; figure(4) subplot(411) plot(t(b),samples2(b,2)) xlabel('时间/s') ylabel('时域幅值/A') title('第2个样本-状态2') subplot(412) plot(f,abs(y)) fshift = (-L/2:L/2-1)*Fs/L; yshift = fftshift(y); subplot(413) plot(fshift,abs(yshift)) P2 = abs(fft(x)/L); P1 = P2(1:L/2); P1(2:end-1) = 2*P1(2:end-1); fnew = (0:(L/2-1))*Fs/L; subplot(414) plot(fnew,P1) figure(5) plot(fnew,P1) xlim([0 100]) ylabel('频域幅值') xlabel('频率/Hz') title('第2个样本-状态2') for i=1:1:sample_number %把时域每个样本都从时域通过傅里叶变换到频域 Fs = 20000; x = samples2(b,i); L = length(x); y = fft(x); f = (0:L-1)*Fs/L; y = y/L; fshift = (-L/2:L/2-1)*Fs/L; yshift = fftshift(y); P2 = abs(fft(x)/L); P1 = P2(1:L/2); P1(2:end-1) = 2*P1(2:end-1); fnew = (0:(L/2-1))*Fs/L; frequency_samples(:,i)= P1; %P1为向量,其长度为P1_length %frequency_samples为所有样本的频域数据幅值,同样为矩阵 %行数为P1_length,列大小即为样本个数 end for i=1:1:sample_number v = frequency_samples(:,i); %频域相关特征 features.Mean(i) = mean(v); %平均值 features.Std(i) = std(v); %标准差 features.Skewness(i) = skewness(v); %偏度 features.Kurtosis(i) = kurtosis(v); %峭度 features.max(i) = max(v); %最大值 features.min(i) = min(v); %最小值 features.Peak2Peak(i) = peak2peak(v); %峰峰值 features.RMS(i) = rms(v); %均方根 features.CrestFactor(i) = max(v)/rms(v); %振幅因数 features.ShapeFactor(i) = rms(v)/mean(abs(v)); %波形因数 features.ImpulseFactor(i) = max(v)/mean(abs(v)); %冲击因数 features.MarginFactor(i) = max(v)/mean(abs(v))^2; %裕度因数 features.Energy(i) = sum(v.^2); %能量 end
评论
    相关推荐
    • 特征数据提取.zip
      轴承信号分析,时域分析,时域特征值,频域分析,倒频谱分析,倒频谱横轴坐标,包络分析。
    • 【项目介绍】音乐特征提取和流派分类.rar
      【项目介绍】音乐特征提取和流派分类答辩ppt
    • df算法特征提取
      df算法,通过在训练集中提取词语,比较出现次数,进行特征词的提取。 这个代码是提取两个特征特征词,可修改main函数中(直接删除一部分)(有详细注释),提取一个类的特征。此程序编译过,无错。
    • 纹理特征提取
      LBP纹理特征提取算法。首先将检测窗口划分为16×16的小区域(cell),对于每个cell中的一个像素,将其环形邻域内的8个点(也可以是环形邻域多个点,如图 3 4. 应用LBP算法的三个邻域示例所示)进行顺时针或逆时针的...
    • 时域特征提取
      对数据进行处理,很直观的反应数据的信息。
    • 虹膜特征提取
      ,虹膜识别中的特征提取算法:2D-Gabor滤波器算法,将归一化的虹膜图像由此滤波器滤波,可以得到二进制的特征编码。附图片。
    • mfcc特征提取
      代码中的melcepts.m直接可以用来提取MFCC,MFCC是Mel-Frequency Cepstral Coefficients的缩写,顾名思义MFCC特征提取包含两个关键步骤:转化到梅尔频率,然后进行倒谱分析
    • 语音特征提取
      用matlab提取语音信号的特征频率,语言matlab代码程序
    • 频域特征提取.zip
      频域分析可按频率观察信号特征,一般情况下,时域的分析更加直观,而频域的表示更加简洁,在频域上观察信号使得问题的分析更加深刻和便捷
    • libiconv-1.1.tar.gz
      字符集转换程序