Genetic Algorithm for parameter estimation in EEMD (Ensemble Empirical Mode Decomposition)
이전 댓글 표시
Hello, I have problem how to implement code changes. I have good working EEMD program on a some data. But in the program I have prameter Nstd = 0.3; % param to white noise. which is fixed and it must be adjusting by genetic algorithm (in range 0-1). The EEMD code is bellow:
y=xlsread('some.data'); % load a signal.
aim = 5; % numbers of IMF
NR = 10; % value of ensemble
Nstd = 0.3; % param to white noise
IMF1=eemd(y,aim,NR,Nstd);
and the eemd.m
function [modes] = eemd(y, aim, NR, Nstd)
stdy = std(y);
if stdy < 0.01
stdy = 1;
end
y = y ./ stdy;
siz = length(y);
modes = zeros(aim+1, siz);
for k = 1:NR
disp(['Ensemble number #' num2str(k)]);
wn = randn(1, siz) .* Nstd;
y1 = y + wn;
y2 = y - wn;
modes = modes + emd(y1, aim);
if Nstd > 0 && NR > 1
modes = modes + emd(y2, aim);
end
end
modes = modes .* stdy ./ (NR);
if Nstd > 0 && NR > 1
modes = modes ./ 2;
end
end
from emd.m in eemd.m I get the IMF's - as much as is "aim"
댓글 수: 3
Manal CHOUBI
2020년 4월 24일
Please i would like to have an explication about the two parameters NR and Nstd i dont quiet understand the meaning and the purpose of these parameters , thanks.
Arpana Singh
2020년 8월 19일
could u plz help me with EEMD . . i m not able to run this code evn . ..if possible mail me at apsingh014@gmail.com
Atik Faysal
2020년 9월 3일
@ Arpana Singh, what version of MATLAB are you using? The emd fuction is available from version 2017b and above.
답변 (1개)
Kalpesh Prajapati
2017년 7월 19일
편집: Kalpesh Prajapati
2017년 7월 19일
1 개 추천
Hello, You have to define some objective function such as quality of algorithm (PSNR,MSE etc) as output argument and make standard deviation of noise as input argument as input parameter. Then just apply genetic algorithm on it. For more detail of how to use genetic algorithm, see some example. You can understand it easily.
댓글 수: 6
Nishtha Rath
2019년 1월 1일
I am doing a project on ensemble empirical mode decomposition, for which I found this MATLAB CODE. I have to use a .wav file as the input. So I converted the .wav into a .mat file. But Here, xlsread() function is used in which I converted my .mat file into its correspondent .xlsx file and tried to run my code with the main function(eemd_test) as:
y=xlsread('Anger.xlsx'); % load a signal.
aim = 5; % numbers of IMF
NR = 10; % value of ensemble
Nstd = 0.3; % param to white noise
IMF1=eemd(y,aim,NR,Nstd);
where, Anger.xlsx is the file name of the .xlsx file I have used in this code. But I couldn't get any output and I get these errors:
Error in eemd (line 14)
modes = modes + emd(y1, aim);
Error in eemd_test (line 5)
IMF1=eemd(y,aim,NR,Nstd);
Please have a look at this and tell me the corrected code in this code.
Thank you!
ADITYA SHARMA
2019년 2월 18일
I am also getting the same problem.
Ajeet Patil
2019년 8월 18일
Use below given eend code (Above given code is changed a little bit)
function [modes] = eemd(y, aim, NR, Nstd)
stdy = std(y);
if stdy < 0.01
stdy = 1;
end
y = y ./ stdy;
siz = length(y);
modes = zeros(siz,aim);
for k = 1:NR
disp(['Ensemble number #' num2str(k)]);
wn = (randn(1,siz).*Nstd)';
y1 = y + wn;
y2 = y - wn;
modes = modes + emd(y1,'MaxNumIMF',aim);
if Nstd > 0 && NR > 1
modes = modes + emd(y2,'MaxNumIMF',aim);
end
end
modes = modes .* stdy ./ (NR);
if Nstd > 0 && NR > 1
modes = modes ./ 2;
end
end
Manal CHOUBI
2020년 4월 24일
Please i would like to have an explication about the two parameters NR and Nstd i dont quiet understand the meaning and the purpose of these parameters , thanks.
Atik Faysal
2020년 9월 3일
편집: Atik Faysal
2020년 9월 3일
@ Manal Choubi, the NR represents the number of ensembles of EEMD. For each ensemble different white noise is added with the signal. The Nstd represents the white noise that is added. Here 0.3 means the randomly generated white noise has a std of 0.3.
Do some study on the theory of EEMD.
If you are still confused reach me out at faisal.atik@gmail.com
Jan Ali
2021년 3월 14일
@Ajeet Patil, Could you/anyone please explain what the difference between zeros(siz,aim) and zeros(aim+1, siz) is, why did you put 'MaxNumIMF' in emd(y2,'MaxNumIMF',aim)?
Thanks in advance,
카테고리
도움말 센터 및 File Exchange에서 Audio I/O and Waveform Generation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!