【问题标题】:Creating a wavelet in Matlab在 Matlab 中创建小波
【发布时间】:2012-11-01 10:33:33
【问题描述】:

我有一些反射率数据,我将用 Ricker/墨西哥帽子小波对这些数据进行卷积以获得地震轨迹。我的问题是由于创建了小波。我希望小波的主频率约为 70Hz,时间步长为 0.19 ms,这与我的反射率数据中的时间步长相同。我曾尝试在 MatLab 中使用 mexihat 函数并调整 lb、ub 和 n 参数来解决我的问题,但我无法弄清楚。有没有更简单的方法来解决我的问题?有谁知道出现主频率的 Ricker 小波的公式?

任何帮助将不胜感激!

【问题讨论】:

  • Dsp.stackexchange.com 可能是解决这个问题的更好地方

标签: matlab wavelet


【解决方案1】:

来自Large Data in MATLAB: A Seismic Data Processing Case Study

% N : number of points you want to plot
[rw,t] = ricker(70,N,0.019);
plot(t,rw), xlabel('Time'), ylabel('Amplitude')

【讨论】:

  • 你也有ricker这个功能吗?这不是 MatLab 中预先存在的函数...
  • 我的答案中的链接指向函数的源代码:只需将其复制粘贴到新的 ricker.m 文件中即可。
【解决方案2】:
% using the equation below
% https://wiki.seg.org/wiki/Dictionary:Ricker_wavelet
ric = @(t,fm)(1-2*pi()^2*fm^2*t.^2)*exp(-1*pi()^2*fm^2*t.^2); % Ricker equation
t = 0:001:2;
plot(ric(t,20));
hold on;
plot(ric(t,5));

【讨论】:

    【解决方案3】:

    注意,我尝试了 lucasg 链接的函数,发现计算小波的公式中有错字:

    s = (1-tau.*tau*f^2*pi^2).*exp(-tau.^2*pi^2*f^2);
    应替换为:
    s = (1-2*tau.*tau*f^2*pi^2).*exp(-tau.^2*pi^2*f^2);

    否则,你会得到一个小脚变种人 ricker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 2013-07-23
      • 2018-06-23
      • 1970-01-01
      • 2017-01-13
      • 2017-04-06
      • 1970-01-01
      相关资源
      最近更新 更多