フィルターのクリア

how to convert the given algorithm adaptable for denoising?

2 ビュー (過去 30 日間)
PARVATHY NAIR
PARVATHY NAIR 2023 年 1 月 4 日
回答済み: Vanshika Vaishnav 2023 年 3 月 9 日
Hello
The purpose of the given code is system identification.But using the same algorithm i need to formulate a code for denoising seismic data.how can i convert the same code for denoising purpose.
function[model_out_evss,e_evss]=myEVSSLMS(y)
sys_desired = [86 -294 -287 -262 -120 140 438 641 613 276 -325 -1009 -1487 -1451 -680 856 2954 5206 7106 8192 8192 7106 5206 2954 856 -680 -1451 -1487 -1009 -325 276 613 641 438 140 -120 -262 -287 -294 86] * 2^(-15);
%sys_desired = [-3 0 19 32 19 0 -3]*2^(-15);
%a=importdata("G:\Project\BKHL.HHE.new.dat");
%digfilt = designfilt('lowpassfir', 'PassbandFrequency', 10, 'StopbandFrequency',20,'SampleRate', 100);
%sys_desired = digfilt.Coefficients;
length_fir = length(sys_desired);
for itr=1:100
%% Defining input and initial Model Coefficients
%input
x=y';
%a=importdata("G:\Project\BKHL.HHE.new.dat");
%x=a';
%% EVSS LMS
model_coeff_evss = zeros(1,length_fir);
%% Initial Values of Model Tap
model_tap = zeros(1,length_fir);
%% System Output where a 40 dB Noise floor is added
noise_floor = 40;
d = randn(size(x))*10^(-noise_floor/20);
sys_opt = filter(sys_desired,1,x)+d;
mu_min = 0.007;
% input variance
input_var = var(x);
% upper bound = 1/(filter_length * input variance)
mu_max = 1/(input_var*length_fir);
%% Defining initial parameters for EVSS-LMS algorithm
mu_EVSS(1) = 0.025;
mu_EXTRA = 1.5*10^(-4);
%% EVSS LMS ALGORITHM
for i=1:length(x)
% model tap values (shifting of tap values by one sample to right)
model_tap=[x(i) model_tap(1:end-1)];
% model output
model_out_evss(i) = model_tap * model_coeff_evss';
% error
e_evss(i) = sys_opt(i) - model_out_evss(i);
%Updating the coefficients
model_coeff_evss = model_coeff_evss + mu_EVSS(i) * e_evss(i) * model_tap;
if mu_EVSS(i)>mu_min
c=1;
else mu_EVSS(i)<=mu_min;
c=2^(-5);
mu_EVSS(i) = mu_min;
end
if mu_EVSS(i)>mu_max
mu_EVSS(i) = mu_max;
mu_EVSS(i+1) = c * mu_EVSS(i) + mu_EXTRA * sign(e_evss(i));
end
%% Storing the e_square values after a whole run of VSS LMS algorithm
err_EVSS(itr,:) = e_evss.^2;
%% Printing the iteration number
clc
disp(char(strcat('iteration no : ',{' '}, num2str(itr) )))
end
figure;
plot(10*log10(mean(err_EVSS,1)),'-b');
title('VSS LMS Algorithms'); xlabel('iterations');ylabel('MSE(dB)');
grid on;

回答 (1 件)

Vanshika Vaishnav
Vanshika Vaishnav 2023 年 3 月 9 日
For a detailed overview of the various filtering and enhancement operations that is supported by MATLAB as part of the Image Processing Toolbox, please refer to the following documentation link:
Specifically, refer to the 'Image Filtering' section in the above page. Some of the examples that demonstrate various denoising applications can be found below (and more can be found in the 'Image Filtering' section):
While these applications use various image processing tools to perform denoising, you can also consider using a deep neural network trained on noisy and denoised images to perform this operation and this can be done easily using the 'denoiseImage' function that is part of the 'Image Processing Toollbox'. More information and examples for this approach can be found in this documentation link:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by