日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab使用EMD

發布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab使用EMD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先產生了一個正弦信號便于分解,顯示其波形和頻譜圖便于對照。

clear;clc; %% 產生原始信號 f1=5; % 信號1的頻率 f2=2; % 信號2的頻率 f3=10; % 信號3的頻率 fs=30; % 采樣率 N=fs*60; t = 0 : 1/fs : (N-1)/fs; y1=5*sin(2*pi*f1*t)+10*sin(2*pi*f2*t)+8*sin(2*pi*f3*t); figure(1);subplot(2,1,1);plot(y1,'r'); %% 畫出原信號的頻率譜 n=0:N-1; f=n*fs/N; y=fft(y1,N); mag=abs(y)*2/N; subplot(2,1,2); plot(f(1:N/2),mag(1:N/2)); %% 畫出EMD分解的IMF值的圖像 % [imf,residual,info] = emd(y1,'Interpolation','pchip'); emd(y1,'Interpolation','pchip');

原始信號的波形及頻譜圖如圖所示:

EMD函數畫出的圖像如圖所示:(只自動顯示了3個IMF圖像)


在空白位置單擊右鍵可以選擇顯示剩下的IMF值。


按OK后即可同時顯示所有IMF的圖像。

同時顯示波形和頻譜圖
對上面的代碼需要簡單的修改,該方法需要知道每個IMF分解出的值,并通過FFT變換為頻域中畫圖。

[imf,residual,info] = emd(y1,'Interpolation','pchip'); for i= 1:size(imf,2)subplot(size(imf,2),2,2*i-1);plot(imf(:,i));subplot(size(imf,2),2,2*i);y1=fft(imf(:,i),N); mag=abs(y1)*2/N; f=n*fs/N; plot(f(1:N/2),mag(1:N/2)); end

運行結果如下圖所示:

[imf,residual,info] =emd(y1,‘Interpolation’,‘pchip’);該式子可獲取到EMD分解的結果,即IMF值及殘差值等參數,在后續可以通過for循環畫出對應的波形和頻譜圖。

可以通過matlab右側的變量區看分解出來的IMF是橫著的還是豎著的格式。

在EMD函數中可以通過添加參數來增多分解的IMF值,在matlab的輸入參數部分可以找到詳細介紹,同時也推薦一位up主的學習視頻。

可以通過[imf,residual,info] = emd(y1,‘Interpolation’,‘pchip’,“SiftRelativeTolerance”,0.02);個人理解的是修改后面的參數值會分解得更細致,本來默認的0.2可能會使幅度相近的兩個信號在一個IMF中,改小可以識別到這樣的情況會減小混疊情況。

推薦學習視頻https://www.bilibili.com/video/BV1Tk4y1r7h1

總結

以上是生活随笔為你收集整理的Matlab使用EMD的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。