Можно сгенерировать MATLAB® код, чтобы воспроизвести основанное на приложении 1D неподкошенное (стационарное) шумоподавление вейвлета в командной строке. Необходимо выполнить эту операцию в инструменте Stationary Wavelet Transform Denoising 1-D. Вы должны первый denoise ваш сигнал, прежде чем можно будет включить операцию File > Generate Matlab Code (Denoising Process).

Войти waveletAnalyzer в командной строке MATLAB.
Выберите SWT Denoising 1-D.
Загрузите Noisy bumps пример. Выберите File > Example Analysis > Noisy Signals > with sym4 at level 5 - - -> Noisy bumps

Установите пороги можно следующим образом:
Уровень 1 — 3.5
Уровень 2 — 3.4
Уровень 3 — 2.3
Уровень 4 — 5.3
Уровень 5 — 2.2
Нажмите Denoise.

Сгенерируйте код MATLAB с File > Generate Matlab Code (Denoising Process).

Операция генерирует следующий код MATLAB.
function [sigDEN,wDEC] = func_denoise_sw1d(SIG)
% FUNC_DENOISE_SW1-D Saved Denoising Process.
% SIG: vector of data
% -------------------
% sigDEN: vector of denoised data
% wDEC: stationary wavelet decomposition
% Analysis parameters.
%---------------------
wname = 'sym4';
level = 5;
% Denoising parameters.
%----------------------
% meth = 'sqtwolog';
% scal_OR_alfa = one;
sorh = 's'; % Specified soft or hard thresholding
thrParams = {...
[...
1.00000000 1024.00000000 3.50000000; ...
]; ...
[...
1.00000000 1024.00000000 3.40000000; ...
]; ...
[...
1.00000000 1024.00000000 2.30000000; ...
]; ...
[...
1.00000000 1024.00000000 5.29965570; ...
]; ...
[...
1.00000000 1024.00000000 2.20000000; ...
]; ...
};
% Decompose using SWT.
%---------------------
wDEC = swt(SIG,level,wname);
% Denoise.
%---------
len = length(SIG);
for k = 1:level
thr_par = thrParams{k};
if ~isempty(thr_par)
NB_int = size(thr_par,1);
x = [thr_par(:,1) ; thr_par(NB_int,2)];
x = round(x);
x(x<1) = 1;
x(x>len) = len;
thr = thr_par(:,3);
for j = 1:NB_int
if j==1 , d_beg = 0; else d_beg = 1; end
j_beg = x(j)+d_beg;
j_end = x(j+1);
j_ind = (j_beg:j_end);
wDEC(k,j_ind) = wthresh(wDEC(k,j_ind),sorh,thr(j));
end
end
end
% Reconstruct the denoise signal using ISWT.
%-------------------------------------------
sigDEN = iswt(wDEC,wname);Сохраните func_denoise_sw1d.m в папке на пути поиска файлов MATLAB. Выполните следующий код.
load noisbump.mat;
[sigDEN,wDEC] = func_denoise_sw1d(noisbump);Выберите File > Save Denoised Signal и сохраните сигнал denoised как denoisedbumps.mat в папке на пути поиска файлов MATLAB.

Выполните следующий код.
load denoisedbump.mat; plot(sigDEN,'k'); axis tight; hold on; plot(denoisedbump,'r'); % norm of the difference norm(sigDEN-denoisedbump,2)
Примечание
Пороги выведены из подмножества коэффициентов в стационарном разложении вейвлета. Для получения дополнительной информации смотрите Содействующий Выбор.