日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图

發布時間:2023/12/9 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面:僅作為個人學習筆記,便于以后查閱,如對你有幫助,榮幸之至,如有錯誤,歡迎評論指正

編程軟件:matlab R2018b
系統: win10

系列文章目錄

  • chirp信號的生成與接收
  • 對接收到的chirp信號進行濾波、分幀處理及端點檢測
  • 計算原始chirp信號與濾波后chirp信號的相關性
  • 繪制接濾波后chirp信號的時域圖和頻域圖
  • 從1-4完整走一遍
  • 文章目錄

        • 系列文章目錄
        • 時域圖
        • 頻域圖
        • 參考文獻

    時域圖

    直接上代碼上圖,因為回聲信號可能有很多個,所以我只截取了一段回聲信號進行展示:

    %% 截取一段回聲信號 i = 1; invaildTime = 0.0138; vaildTime = 0.0800; %set the vaild time of real echo % invaildTime = 0.0138; vaildTime = 0.0862; invaildLen = round(invaildTime * fs); vaildLen = round(vaildTime * fs); %get the real echo' length startIndex = (voiceseg(i).begin - 1) * inc + invaildLen; endIndex = startIndex + vaildLen; % startIndex = (voiceseg(i).begin - 1) * inc; % endIndex = startIndex + chirpInterval * fs; % echo = xPoly(startIndex : endIndex); %回聲信號 echo = xFilter(startIndex : endIndex); % echoEnvelop = abs(echo+(1i)*hilbert(echo)); %get the envelop of this echo segment echoTime = time(startIndex : endIndex); % figure(2); subplot(2, 2, 2); plot(echoTime, echo); grid; % ylabel('歸一化幅值'); ylabel('幅值'); xlabel(['樣本點' 10 '(b)']); title('一段回聲信號');%%% compute the correlation between echo and raw audio signal corrEcho = matched_filter_compute(echo, sampleSignal); corrEcho = corrEcho / max(corrEcho); timeEcho = 0 : length(corrEcho) - 1; timeEcho = timeEcho/fs; subplot(2, 2, 3); plot(timeEcho, corrEcho); grid; title('回聲的相關性'); % ylabel('歸一化幅值'); ylabel('幅值'); xlabel(['樣本點' 10 '(c)']); hold on;

    一段回聲信號的時域圖如下所示,橫坐標時樣本點序列,橫坐標是信號的幅值:

    頻域圖

    上代碼上圖:

    %% compute the fft %%% get the echo array echoData = echo; [f_vec, amp] = fftCompute(echoData, fs); freqArr = zeros(length(f_vec), k); % store echo valid echo data); freqArr( : , 1) = amp;% for i = 2 : chirpRepeat for i = 2 : kstartIndex = (voiceseg(i).begin - 1) * inc + invaildLen;endIndex = startIndex + vaildLen; % echoData = xPoly(startIndex : endIndex);echoData = xFilter(startIndex : endIndex);[f_vec, amp] = fftCompute(echoData, fs);freqArr( : , i) = amp; end freqMean = sum(freqArr, 2); freqMean = freqMean / k; % freqMean = freqMean / max(abs(freqMean));subplot(2, 2, 4); plot(f_vec, freqMean); xlabel(['頻率/HZ']); ylabel('幅度'); title('頻域圖');

    回聲信號的平均頻域圖如下所示,簡言之,對每個回聲信號都去計算它的頻譜,最后取一個平均值,能在一定程度上減弱單個回聲信號的誤差。橫坐標為頻率、縱坐標為頻率幅值,我們提取出的信號的頻域確實分布在18KHZ-20KHZ區間附近,因此,因此可認為我們提取出的回聲信號是有效的。

    參考文獻

  • 宋知用.MATLAB語音信號分析與合成(第2版)[M].北京:北京航空航天大學出版社,2017.10.
  • 總結

    以上是生活随笔為你收集整理的语音信号预处理4——绘制接滤波后chirp信号的时域图和频域图的全部內容,希望文章能夠幫你解決所遇到的問題。

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