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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間:2023/12/9 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音信号预处理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信号的时域图和频域图的全部內容,希望文章能夠幫你解決所遇到的問題。

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