• 机械小王子
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 0
    下载次数
  • 2021-03-15 20:20
    上传日期
时域特征分离,vmd算法的matlab程序
VMD_try.zip
  • VMD_try.m
    4.4KB
内容介绍
clc; %清屏 clear all %清寄存器的值 load 238.mat; SJ=X238_DE_time'; s=SJ(19731:39731); fs=48000; N=length(s); t=(0:1:N-1)/fs; freqs = 2*pi*(t-N/fs/2-1/fs)/(1/fs)/(N/fs);%fftshift(fft)变换后每个数据点的频率 % s_hat = fftshift((fft(s))); % k=kurtosis(s); % % k=abs((mean(s).^4)-3*(mean(s.^2))^2);%峭度计算公式 figure(1) % subplot(211) plot(t,s); xlabel('t/s','FontName','Times New Roman','Fontsize',20);ylabel('A/(m \cdot s^{-2})','FontName','Times New Roman','Fontsize',20); set(gca,'FontName','Times New Roman','FontSize',20); % subplot(212) % plot(abs(s_hat)); % p=[1:1:200]; % cm={};K=[];Rint=[];E=[]; % % p=2 % for i = 1:length(p) % a = lpc(s,p(i)); % est_x = filter([0 -a(2:end)],1,s); % e = s'-est_x'; % R_e(i)=kurtosis(est_x); % end % figure % plot(p,R_e) % [Max_R,I]=max(R_e); % p(I) % figure % a = lpc(s,p(I)); % est_x = filter([0 -a(2:end)],1,s); % plot(t,est_x); % x=est_x; % [y_final f_final kurt] = med2d(s',30,[],0.01,1); % x=y_final; % figure % plot(t,x); x=s; x = x - mean(x); Na =45; a = lpc(x,Na); x = fftfilt(a,x); figure plot(t,x); title('预白化处理后时域图'); xlabel('t/s','FontName','Times New Roman','Fontsize',20);ylabel('A/(m \cdot s^{-2})','FontName','Times New Roman','Fontsize',20);% grid on; set(gca,'FontName','Times New Roman','FontSize',20); % % ex=energyop(x,1); % % ex=[0;0;ex]; % figure % % subplot(211);plot(t,s);title('输入信号的时域图');xlabel('t/s');ylabel('A/(m \cdot s^{-2})');% grid on; % % subplot(212); % plot(t,x); % % title('预白化处理后时域图'); % xlabel('t/s');ylabel('A/(m \cdot s^{-2})');% grid on; % 最大峭度解卷积 % [y_final f_final ck_iter] = mckd(s,400,30,100,7,1); % x=y_final; % figure % plot(t,x); % % % % [y_final f_final kurt] = med2d(x0',30,[],0.01,1); % % x=y_final; % % % wp=2*8000/fs; ws=2*8200/fs; Rp=1; As=30; % % [N,wc]=buttord(wp,ws,Rp,As); % % [B,A]=butter(N,wc); % % [H,W]=freqz(B,A); % % y=filter(B,A,s); % % figure % % subplot(312); % % plot(W,abs(H)); % % title('低通滤波器'); subplot(313); % % plot(t,y) % % title('30Hz'); % 参数预设 alpha =2000; % moderate bandwidth constraint tau = 0.3; % noise-tolerance (no strict fidelity enforcement) K =7; % 3 modes DC = 0; % no DC part imposed init = 1; % initialize omegas uniformly tol = 1e-7; % VMD分解 [u, u_hat, omega] = VMD(x,fs, alpha, tau, K, DC, init, tol); % 求中心频率 % center_fres=(fs/N)*fs*(omega(end,:)); center_fres=(fs/N)*fs*(omega(end,:)); save x x; % save s_hat s_hat; save u u; save u_hat u_hat; save omega omega; figure for i = 1:size(u,1) k(i)=kurtosis(u(:,i)); [Ha,Hb,Hab,mi] = MI(u(i,:),x) % Kr(i) = sum(u(i,:).^4)/sqrt(sum(u(i,:).^2)) %峭度因子 subplot(size(u,1),1,i); plot(t,u(i,:)); title('IMF','FontName','Times New Roman'); xlabel('t/s','FontName','Times New Roman','Fontsize',20); ylabel('A/(m \cdot s^{-2})','FontName','Times New Roman','Fontsize',20); set(gca,'FontName','Times New Roman','FontSize',20); grid on; end % u1(:,i)=u(i,:)', % [m,n]=size(u1(:,i)); % for i=1:n % k(i)=kurtosis(u1(:,i)); % end % % figure % for i = 1:size(u,1) % subplot(size(u,1),1,i); % plot(freqs,abs(fft(u(i,:))),'k');grid on; % end % % corrall=corrcoef([x' u']); % corr=corrall(1,2:end); % 每个VMD与原信号的相关系数 % for i=1:8 % sd(i)=std(u(i,:)); % r(i)=0.25*sd(i); % x0(i)=fast_ApEn(u(i,:),r(i)); % end % % % for i=1:8 % Yi= fft(u(i,:)); %快速FFT变换 % N(i) = length(Yi); %FFT变换后数据长度 % [max_a(i),index(i)]=max(Yi,[],2); % T_imf(i) = 1./max_a(i); %计算周期 % end % figure(4) % x1=u(2-1,:); % % xu=u(2-1,:)+u(4-1,:); % y_hht=hilbert(x1);%希尔伯特变换 % y_a=abs(y_hht);%包络信号 % y_a2=(y_a).^2;%平方包络信号 % y_an=y_a-mean(y_a);%去除直流分量 % subplot(311); % plot(t,y_an);title('重构信号包络图');grid on; % subplot(312);plot(t,y_a);title('包络信号幅值谱');grid on; % subplot(313);plot(t,y_a2);title('平方包络信号幅值谱');grid on; % xu=u(2-1,:)+u(3-1,:)+u(4-1,:); % figure(4) % plot(t,xu,'k'); % x1=xu; % % ex=energyop(x1,1); % ex=[0;0;ex]; % % [C,S]=wavedec(ex,4,'sym5'); % d4=wrcoef('d',C,S,'sym5',4); % figure(5) % plot(d4);ylabel('d4'); % % [C,S]=wavedec(ex,4,'sym5'); % a4=wrcoef('a',C,S,'sym5',4); % figure(6) % plot(a4);ylabel('a4');
评论
    相关推荐
    • VMD通过中心频率确定分解个数K.rar
      vmd的原始程序,亲测可以用,有什么问题的欢迎大家留言与探讨。
    • 基于VMD和Teager能量谱的滚动轴承故障特征提取.zip
      基于VMD和1_5维Teager能量谱的滚动轴承故障特征提取_向玲
    • VMD.zip
      VMD(Variational mode decomposition)是一种自适应、完全非递归的模态变分和信号处理的方法。该技术具有可以确定模态分解个数的优点,其自适应性表现在根据实际情况确定所给序列的模态分解个数,随后的搜索和求解...
    • 基于VMD算法的信号降噪.rar
      针对论文:基于VMD的故障特征信号提取方法,本人对论文中的仿真信号部分进行了复现,首先产生仿真信号;其次,利用VMD对信号进行分解,运用排列熵确定含高噪分量,然后对低噪分量进行重构;最后,将重构的信号...
    • EVMD算法函数.zip
      VMD算法进行改进,可使分离结果更加稳定
    • matlabcnhelp.rar
      matlab中文帮助很难找的,快速下载
    • MobilePolice.rar
      移动警察,车牌识别,车牌定位系统源代码,已经运用在移动车载稽查系统中。
    • SVM(matlab).rar
      支持向量机(SVM)实现的分类算法源码[matlab]
    • svm.zip
      用MATLAB编写的svm源程序,可以实现支持向量机,用于特征分类或提取
    • Classification-MatLab-Toolbox.rar
      模式识别matlab工具箱,包括SVM,ICA,PCA,NN等等模式识别算法,很有参考价值