二阶时间重新分配同步挤压变换:应用于Draupner波分析(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

摘要:
本文解决了在时间和频率上有效地联合表示非平稳多组分信号的问题。我们引入了一种新颖的改进方法,即设计了用于计算冲击或强调制信号的锐化和可逆表示的时间重新分配同步挤压方法。在建立了新方法与我们之前结果的理论关系之后,我们通过数值实验说明了我们提议的方法在应用于合成和真实信号时所带来的改进。我们的实验涉及对Draupner波记录的分析,我们提供了开创性的时间频率分析结果。

时间频率和时间尺度分析旨在开发处理非平稳多组分信号的高效创新方法。在常见的方法中,短时傅里叶变换(STFT)和连续小波变换(CWT)是最简单的线性变换,已经在各种应用中得到广泛应用,如音频、生物医学、地震或雷达。

不幸的是,这些工具受到海森堡-盖伯不确定性原理的限制。因此,得到的表示模糊不清,能量集中度低,并且需要在时间或频率定位的准确性之间进行权衡。另一种方法,重新分配方法,被引入为改善时间频率表示(TFR)的可读性的数学上优雅且高效的解决方案。不便之处在于重新分配提供的TFR是不可逆的,这限制了其对分析或建模应用的兴趣。

更近期,同步挤压被引入作为重新分配技术的一种变体,因为它能够提供锐化和可逆的TFR。这种重构能力使得该方法持续受到关注,因为它为基于同步挤压的无限多个应用铺平了道路,如噪声去除、信号成分提取或分离。

📚2 运行结果

部分代码:

%% 3 - time-reassigned synchrosqueezed STFT
  fprintf(1, 'time-reassigned synchrosqueezing...\n', L);
  tic 
  [~, stfr, lost, lost2] = tfrtsgab2(sz, M, L, gamma_K);
  toc
  
  figure(3)
  imagesc(n/(60*Fs), nfreqs*Fs, abs(stfr(1:M2,n_range).^2).^alpha);
  if process == 2, ylim([0.2 1]); end
  set(gca,'YDir','normal')
  xlabel('time [min]', 'FontSize', 16)
  ylabel('frequency [Hz]', 'FontSize', 16)
  title(sprintf('L=%0.02f', L), 'FontSize', 14);
  colormap gray;
  cmap = colormap;
  colormap(flipud(cmap));
  %saveas(gcf, sprintf('%s/time-reassigned-spectrogram%d.eps', chemin,index), 'epsc');

  if reconstruct
      %% reconstruct signal
      stfr(:,end) = stfr(:,end) + lost2;
      s_hat = real(rectfrhsgab(stfr, M));
      s_hat = s_hat(n_range);

      figure(31)
      plot(s)
      hold on
      plot(s_hat, 'r-.')
      legend('ref', 'reconstruction')
      rqf_s = RQF(s.',s_hat);
      title(sprintf('Signal RQF=%.2f', rqf_s), 'FontSize', 14);
      %%saveas(gcf, sprintf('%s/reconstruction_time-reassigned-SST%d.eps', chemin,index), 'epsc');
  end

  %% 4 - second-order horizontal synchrosqueezed STFT
  [~, stfr2, lost] = tfrthsgab2(s, M, L,gamma_K, q_method);

  figure(4)
  imagesc(n/(60*Fs), nfreqs*Fs, abs(stfr2(1:M2,:).^2).^alpha);
  if process == 2, ylim([0.2 1]); end
  set(gca,'YDir','normal')
  xlabel('time [min]', 'FontSize', 16)
  ylabel('frequency [Hz]', 'FontSize', 16)
  title(sprintf('L=%0.02f', L), 'FontSize', 14);
  colormap gray;
  cmap = colormap;
  cmap = flipud(cmap);
  colormap(cmap);
  %saveas(gcf, sprintf('%s/second_order_time-reassigned-SST%d.eps', chemin,index), 'epsc');

   if reconstruct
    %% reconstruct signal
    s_hat = real(rectfrhsgab(stfr2, M));
    figure(42)
    plot(s)
    hold on
    plot(s_hat, 'r-.')
    legend('ref', 'reconstruction')
    rqf_s = RQF(s.',s_hat);
    title(sprintf('Signal RQF=%.2f', rqf_s), 'FontSize', 14);
    %saveas(gcf, sprintf('%s/reconstruction_second-order-time-reassigned-synch.eps', chemin), 'epsc');
   end
   
 
    %% 5 - (classical) synchrosqueezed STFT
    [~, stfr, lost] = tfrsgab2(s, M, L, gamma_K);

    figure(5)
    imagesc(n/(60*Fs), nfreqs*Fs, abs(stfr(1:M2,:).^2).^alpha);
    if process == 2, ylim([0.2 1]); end
    set(gca,'YDir','normal')
    xlabel('time [min]', 'FontSize', 16)
    ylabel('frequency [Hz]', 'FontSize', 16)
    title(sprintf('L=%0.02f', L), 'FontSize', 14);
    colormap gray;
    cmap = colormap;
    cmap = flipud(cmap);
    colormap(cmap);
    %saveas(gcf, sprintf('%s/synchrosqueezing%d.eps', chemin, index), 'epsc');
 
    if reconstruct
     %% reconstruct signal
     s_hat = real(rectfrsgab(stfr, L, M));
     figure(51)
     plot(s)
     hold on
     plot(s_hat, 'r-.')
     legend('ref', 'reconstruction')
     rqf_s = RQF(s.',s_hat);
     title(sprintf('Signal RQF=%.2f', rqf_s), 'FontSize', 14);
     %saveas(gcf, sprintf('%s/reconstruction_synchrosqueezing.eps', chemin), 'epsc');
    end
    
    %% 6 - second-order vertically synchrosqueezed STFT
    %[tfr, stfr2, lost] = tfrvsgab(s, M, L,gamma_K);
    [tfr, stfr2, lost, ~, ~] = tfrvsgab2(s, M, L, q_method, 2, gamma_K, gamma_K);

    figure(6)
    imagesc(n/(60*Fs), nfreqs*Fs, abs(stfr2(1:M2,:).^2).^alpha);
    if process == 2, ylim([0.2 1]); end
    set(gca,'YDir','normal')
    xlabel('time [min]', 'FontSize', 16)
    ylabel('frequency [Hz]', 'FontSize', 16)
    title(sprintf('L=%0.02f', L), 'FontSize', 14);
    colormap gray;
    cmap = colormap;
    cmap = flipud(cmap);
    colormap(cmap);
    %saveas(gcf, sprintf('%s/second-order-synchrosqueezing%d.eps', chemin, index), 'epsc');
    
    if reconstruct
    %% reconstruct signal
     s_hat = real(rectfrsgab(stfr2, L, M));
     figure(61)
     plot(s)
     hold on
     plot(s_hat, 'r-.')
     legend('ref', 'reconstruction')
     rqf_s = RQF(s.',s_hat);
     title(sprintf('Signal RQF=%.2f', rqf_s), 'FontSize', 14);
    end
    index = index + 1;
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值