Matlab 如何繪制復雜曲線的包絡線


Matlab 如何繪制復雜曲線的包絡線

http://jingyan.baidu.com/article/aa6a2c14d36c710d4c19c4a8.html

 

如果一條曲線(比如聲音波形)波動很大,曲折復雜,可以通過繪制包絡線的方式使其更加平滑和清晰。本經驗幫助剛接觸matlab不久的新手完成這一過程。

工具/原料

  • Matlab 軟件

  • 樣本數據

方法/步驟

  1.  

    處理前后的效果對比,圖示為某聲波傅里葉變換(fft)后的頻譜圖。

    Matlab 如何繪制復雜曲線的包絡線
  2.  

    原數據為橫縱坐標為 frequency 和 Amplitude,都是<2048x1 double>的數據,即包含2048個數據點,由 subplot(2,2,1),plot(fr,Am); 繪制而成。

  3.  

    包絡線的生成,需要將原數據分成等寬度的小段,每段取一個最高點所對應的橫坐標和縱坐標(如圖所示)。比如設定每小段的長度為 d = 4 或 8 或 16(或2048的其他約數),然后運行

    y=reshape(Amplitude,d,2048/d);

    y=max(y);

    x=linspace(0,max(frequency),2048/d);

    所得 x 和 y 即為包絡線的橫縱坐標。

    Matlab 如何繪制復雜曲線的包絡線
  4.  

    其中關鍵的函數為 reshape() 和 linspace()。

    reshape() 函數重新調整矩陣的行數、列數、維數。reshape(X,m,n) 可以把矩陣 X 調整為 m 行 n 列的矩陣,比如:

    >> reshape([1 2 3 4 5 6],2,3)

     

    ans =

     

         1     3     5

         2     4     6

     

    linspace() 用於生產線性矢量。 linspace(a,b,n) 可以生產從 a 到 b 之間共 n 個元素組成的一維數組。比如:

    >> linspace(1,5,4)

     

    ans =

     

        1.0000    2.3333    3.6667    5.0000

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM