導航:首頁 > 五金知識 > emd程序gling工具箱

emd程序gling工具箱

發布時間:2023-07-31 20:49:15

Ⅰ matlab編的有關EMD去噪的程序,處理的是核磁共振測井信號,急求

function imf = emd(x,n);%%最好把函數名改為emd1之類的,以免和Grilling的emd沖突
%%n為你想得到的IMF的個數
c = x('; % of the input signal (as a row vector)
N = length(x);-
% loop to decompose the input signal into n successive IMFs
imf = []; % Matrix which will contain the successive IMF, and the resiefor t=1:n
% loop on successive IMFs
%-------------------------------------------------------------------------
% inner loop to find each imf
h = c; % at the beginning of the sifting process, h is the signal
SD = 1; % Standard deviation which will be used to stop the sifting process
while SD > 0.3 % while the standard deviation is higher than 0.3 (typical value) %%篩選停止准則
% find local max/min points
d = diff(h); % approximate derivative %%求各點導數
maxmin = []; % to store the optima (min and max without distinction so far)
for i=1:N-2
if d(i)==0 % we are on a zero %%導數為0的點,即」駐點「,但駐點不一定都是極值點,如y=x^3的x=0處
if sign(d(i-1))~=sign(d(i+1)) % it is a maximum %%如果駐點兩側的導數異號(如一邊正,一邊負),那麼該點為極值點
maxmin = [maxmin, i]; %%找到極值點在信號中的坐標(不分極大值和極小值點)
end
elseif sign(d(i))~=sign(d(i+1)) % we are straddling a zero so%%如y=|x|在x=0處是極值點,但該點倒數不存在,所以不能用上面的判
斷方法
maxmin = [maxmin, i+1]; % define zero as at i+1 (not i) %%這里提供了另一類極值點的判斷方法
end
end
if size(maxmin,2) < 2 % then it is the resie %%判斷信號是不是已經符合殘余分量定義
break
end
% divide maxmin into maxes and mins %% 分離極大值點和極小值點
if maxmin(1)>maxmin(2) % first one is a max not a min
maxes = maxmin(1:2:length(maxmin));
mins = maxmin(2:2:length(maxmin));
else % is the other way around
maxes = maxmin(2:2:length(maxmin));
mins = maxmin(1:2:length(maxmin));
end % make endpoints both maxes and mins
maxes = [1 maxes N];
mins = [1 mins N];
%------------------------------------------------------------------------- % spline interpolate to get max and min envelopes; form imf
maxenv = spline(maxes,h(maxes),1:N); %%用樣條函數插值擬合所有的極大值點
minenv = spline(mins, h(mins),1:N); %%用樣條函數插值擬合所有的極小值點
m = (maxenv + minenv)/2; % mean of max and min enveloppes %%求上下包絡的均值
prevh = h; % of the previous value of h before modifying it %%h為分解前的信號
h = h - m; % substract mean to h %% 減去包絡均值
% calculate standard deviation
eps = 0.0000001; % to avoid zero values
SD = sum ( ((prevh - h).^2) ./ (prevh.^2 + eps) ); %% 計算停止准則
end
imf = [imf; h]; % store the extracted IMF in the matrix imf
% if size(maxmin,2)<2, then h is the resie
% stop criterion of the algo. if we reach the end before n
if size(maxmin,2) < 2
break
end
c = c - h; % substract the extracted IMF from the signal
end
return

Ⅱ matlab裝上EMD工具箱後怎麼調用emd函數啊

下載的工具箱中的emd.m文件里的注釋有詳細的用法介紹。

工具箱的安裝
運行install_emd.m文件可以實現此工具箱的安裝,uninstall_emd.m實現卸載。

安裝中的問題
但是安裝的時候,如果使用的是VS的編譯器(mbuild –setup、mex –setup設置),會報找不到complex.h的問題(用Linux下的Matlab不會出錯),從而使cemdc2_fix.c等文件編譯失敗,這幾個文件是為了快速實現計算EMD而用c編寫的,所以即使編譯失敗,也不影響直接使用emd.m實現EMD功能。如果想編譯成功,可如下修改:(摘自http://www.chinavib.com/thread-79866-1-1.html)
G. Rilling 07年3月份的程序,運行作者的install_emd.m,出現找不到complex.h的問題,以下是個人的理解和解決過程:(個人的運行環境為matlab6.5)
complex.h的問題
產生原因:採用matlab的C編譯函數mex時,定義了C99_OK的宏(EMDS/make_emdc.m (28行)),利用的是ANSI C99標准如果個人的電腦中沒有相關的支持,就會出現這個問題。
解決方法:EMDS/make_emdc.m中第28行中mex(』-DC99_OK『,args(:))語句中的 '-DC99_OK' 即可。
注意:
改完之後,運行install_emd,會出現M_PI沒有定義的問題,缺少了常數PI的宏定義,導致一些.c文件編譯失敗。
產生原因:去掉C99_OK之後,程序中使用的是作者提供的 emd_complex.h和emd_complex.c兩個文件來支持復數運算,這兩個文件中,並沒有定義M_PI這個宏。
解決方法:M_PI這個宏,只在兩個文件中(clocal_mean.c和clocal_mean2.c)使用,個人的解決方法是,在相應的頭文件(clocal_mean.h和clocal_mean2.h)中加入M_PI的宏定義即可。
在兩個.h文件中分別加入一下語句:
#define CLOCAL_MEAN_H
#ifndef M_PI
#define M_PI 3.1415926
#endif
安裝完成後,編譯輸出的.dll文件會出現,重復後綴名的問題,及 xxx.dll 變成了 xxx.dll.dll自己去掉多餘的.dll即可
最後,關於版本問題:作者推薦使用7.1+版本,但只是針對個別的函數有影響,主要是作者提供的例子程序,無法在matlab6.5環境中運行,演算法的主要功能函數並不受影響。

Ⅲ matlab emd工具箱使用

其實用起來也很簡單的,舉個例子:

clearall;
clf;

t=0:0.1:4*pi;
%構造一個信號
x=10.*sin(t)+5.*cos(2.*t);
%加點內噪容聲
noise=normrnd(0,1,1,length(x));
y=x+noise;

%emd分解
imf=emd(x);
[mn]=size(imf);
emd_visu(x,t,imf);

Ⅳ matlab有emd函數嗎

沒有的,但是可以用matlab的時頻工具箱,工具箱下載地址:http://tftb.nongnu.org/
matlab的工具箱的安裝步驟:
1.解壓專下載的文件包,屬將tft/mfile復制到matlab的toolbox文件夾下
2.建立搜索路徑,matlab->file->Set Path->Add Folder
->選擇mfile文件夾復制到matlab的toolbox的路徑->save->close
3.測試是否建立搜索路徑成功,在matlab命令窗口打入:which fmsin
返回的結果是你放mfile的正確路徑說明建立搜索路徑成功,就完成了安裝工具包的工作。
此時EMD的准備工作就完了。

Ⅳ MATLAB中如何調用EMD工具箱

1、首先下載emd工具箱,50樓網址裡面可以下。下載後解壓放在matlab的work工作路徑下package_emd文件夾。
2、打開matlab,選版擇File- Set Path- Add with Subfolders-你剛才權下載的工具箱(package_emd)點進去- Save- Close。
3、此時選擇work下package_emd文件夾作為工作路徑,即是D:\matlabR2006b\work\package_emd。
4、在Command Window裡面輸入mex -setup回車,問是否選擇已有的編譯器你選y回車,再問選擇哪個編譯器,你可以選擇C++的那個選擇相應的編號(如 2)回車,然後讓你核對是否選擇對了編譯器等等,你輸入y回車。。。就安裝成功了了

Ⅵ 有關EMD分解matlab程序

一般的的查詢可在matlab里的幫助界面進行搜索,點擊幫助。
打開幫助頁回面,左側檢索答欄進行檢索需要查詢的語句,然後即可查看右側查詢結果。
或者在主界面,輸入help 空格+你要查詢的內容,進行查詢。下次你可以嘗試一下。
一般程序都會有不懂得語句,或沒用過的,可以在剛剛說過的幫助頁面進行查詢,看如何使用,輸入參量什麼意義,程序輸出結果是什麼。
你這個描述太過於簡略了,我只能給出這樣的答案了,一般可以都給一點程序,也許會有對答題人幫助。
不過你這個程序的確有點復雜,不根據前後邏輯,和主程序和目的是很難解答的。
你可以看看主程序,再查查幫助。
希望對你有所幫助。謝謝。

閱讀全文

與emd程序gling工具箱相關的資料

熱點內容
豐縣漢固達五金機電 瀏覽:533
劍刀是什麼鑄造 瀏覽:762
有三個儀表盤的什麼車 瀏覽:550
空調製冷時室內機結冰是什麼原因 瀏覽:206
小米黑鯊怎麼上設備鎖 瀏覽:990
電磁空氣閥門的拆裝與常見故障排除 瀏覽:446
塑料管道是用塑料閥門嗎 瀏覽:271
機械革命筆記本觸摸板怎麼開 瀏覽:468
輔助儀表是什麼意思 瀏覽:859
什麼冷水機只能製冷 瀏覽:55
氧氣瓶閥門整個斷了怎麼辦 瀏覽:865
原電池實驗裝置原理 瀏覽:822
如何做好設施設備的售後工作 瀏覽:139
環宇五金機電城 瀏覽:189
工具磨磨頭軸承怎麼裝 瀏覽:975
寶來儀表盤代表什麼 瀏覽:748
主輔軸滾針軸承怎麼裝 瀏覽:989
舟山電動工具電機 瀏覽:634
空調製冷時為什麼吹冷風 瀏覽:722
油潤滑軸承蓋該怎麼設計 瀏覽:558