我有兴趣导出离散小波变换以减少超过 50,000 个数据点的噪声。我正在使用 wmulden - 用于小波变换的 matlab 工具。在这个函数 wfastmcd 下,另一个函数被调用,它一次只需要 50000 个数据点。如果有人建议如何对数据点进行分区以获取整个数据集的转换,或者是否有任何其他 matlab 工具可用于此类计算,那将非常有帮助。
问问题
165 次
1 回答
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
这应该够了吧。
于 2017-01-04T22:26:38.517 回答