【问题标题】:matlab discrete wavelet transform wfastmod in wmuldenwmulden中的matlab离散小波变换wfastmod
【发布时间】:2016-05-11 10:47:09
【问题描述】:

我有兴趣导出离散小波变换以减少超过 50,000 个数据点的噪声。我正在使用 wmulden - matlab 小波变换工具。在这个函数 wfastmcd 下,另一个函数被调用,它一次只需要 50000 个数据点。如果有人建议如何对数据点进行分区以获取整个数据集的转换,或者是否有任何其他 matlab 工具可用于此类计算,那将非常有帮助。

【问题讨论】:

  • 考虑阅读this 以获得最佳答案
  • 我的MATLAB里面没有wfastmod,你是说wfastmcd吗?
  • 是的,它是 wfastmcd !
  • @MatthiasW。你对这个功能有什么想法吗?
  • @Mambo:还没有,抱歉。刚刚尝试获取有关您的功能的帮助/文档,并考虑使用 code tags 重新格式化您的帖子。

标签: matlab haar-wavelet wavelet-transform


【解决方案1】:

我使用for 循环来解决这个问题。

首先,我计算了在 50000 的固定大小窗口上,我需要对信号采取多少“步骤”,例如:

MAX_SAMPLES = 50000;
% mySignalSize is the size of my samples vector.
steps = ceil(mySignalSize/MAX_SAMPLES);

之后,我应用了wmulden函数“steps”次,每次检查我的步长是否不大于原始信号向量大小,如下所示:

% Wavelet fields
level = 5;
wname = 'sym4';
tptr  = 'sqtwolog';
sorh  = 's';

npc_app = 'heur';
npc_fin = 'heur';

den_signal = zeros(mySignalSize,1);

for i=1:steps

    if (i*MAX_SAMPLES) <= mySignalSize
       x_den = wmulden(originalSignal( (((i-1) * MAX_SAMPLES) + 1) : (i*MAX_SAMPLES) ), level, wname, npc_app, npc_fin, tptr, sorh);
       den_signal((((i-1) * MAX_SAMPLES) + 1):i*MAX_SAMPLES) = x_den;
    else
        old_step = (((i-1) * MAX_SAMPLES) + 1);
        new_step = mySignalSize - old_step;
        last_step = old_step + new_step;
        x_den = wmulden(originalSignal( (((i-1) * MAX_SAMPLES) + 1) : last_step ), level, wname, npc_app, npc_fin, tptr, sorh);
        den_signal((((i-1) * MAX_SAMPLES) + 1):last_step) = x_den;
    end
end

这应该可以解决问题。

【讨论】:

  • 你应该连接 x_den 变量而不是在每次迭代中替换它们......
猜你喜欢
  • 2013-07-20
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2012-10-30
  • 2015-11-28
  • 2011-06-30
  • 1970-01-01
相关资源
最近更新 更多