在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FIR連續采樣分段卷積時域重疊相加法

安費諾傳感器學堂 ? 來源:安費諾傳感器學堂 ? 2024-06-14 10:30 ? 次閱讀

在上一個文檔里,我們提到了FIR系統在時域的分段卷積中使用“重疊保留(Overlap-Save)”的處理方式,這里我們續集,說明一下“重疊相加(Overlap-Add)”的處理方式。 信號處理在時域和頻域中處理是有差異的。 說得通俗一點就是:時域中處理是直接用采集到的信號進行計算;而頻域中則要用離散傅里葉變換(DFT)/離散傅里葉反變換(IDFT)對采集到的信號進行轉換到頻域,然后再從頻域轉回時域處理。

在我們看到的參考文檔[1]中,描述的是在頻域進行DFT,然后由IDFT轉回時域處理的過程。如下圖所示。大概的過程是:

每次處理的數據長度為L,然后在每分段的尾部添加(M-1)個0之后,讓每次處理的數據序列長度N=L+M-1,通常N為2的冪次倍;

同時對于濾波器,也需要將原來長度為b的序列,通過填0的方式增加到長度為N;

由DFT將兩個數列分別轉換到頻域,相乘后,再IDFT轉回時域,就得到N=(L+M-1)的時域卷積結果;

保留每次操作的所有數據,然后在下一次操作結束后,將最新數據的最前面的(M-1)個結果數據和上一次結果數據的最后(M-1)個數據順序相加......持續直至結束。

3b52778c-2986-11ef-a4c8-92fbcf53809c.png

FIR頻域的重疊相加示意圖

我們看看時域的卷積應該怎么操作。

3b759190-2986-11ef-a4c8-92fbcf53809c.png

FIR時域重疊相加操作示意圖

如上圖所示:

每次讀取長為L的數據序列,然后與長度為M的濾波器進行卷積,生成一個(L+M-1)的卷積結果序列;

保留每次操作的所有數據,然后在下一次操作結束后,將最新數據的最前面的(M-1)個結果數據和上一次結果數據的最后(M-1)個數據順序相加......持續直至結束。

兩個過程看起來略有差異,甚至會覺得時域的處理更簡單省事,會不會更省時?其實頻域看起來費時,但數據規模到了一定程度之后,頻域的處理速度就具有優勢了。然而對于一般的應用,直接卷積操作還是可以接受的。

還記得上次我們提到Python中卷積函數np.convolve的三種模式吧?該函數對卷積是在時域中進行的。

在Python中,卷積函數np.convolve(data_segment, b, mode)對指定長度的數據data_segment(長度L),和FIR濾波器系數序列b(長度M)進行卷積。輸出的結果序列則分為以下三種:

full:結果長度=M+L-1

same:結果長度=max(M,L)

valid:結果長度=max(M,L)-min(M,L)+1=L-(M-1)

在這里,我們需要選用full模式,這樣就獲取每段卷積一個不落的所有數據(L+M-1)。先看模擬效果后看Python代碼。 故事情節設定:50Hz的信號中,夾雜300,450Hz的干擾。濾除干擾。

3b92b48c-2986-11ef-a4c8-92fbcf53809c.png

FIR選頻濾波器的幅頻響應

3ba70892-2986-11ef-a4c8-92fbcf53809c.png

FIR系統重疊相加的濾波結果示意圖

這里要特別說明一點:卷積后的數據長度,最終會比原來的數多出(M-1)個,所以輸出到圖的時候,需要有意控制長度。 濾波過程中要經歷“熱身”,所以最開始階段有(M-1)個數據也是可以剔除的。同樣,如果我們看卷積最終結果尾部不處理,也有(M-1)個無效數據的輸出需要截取。

3bd9424e-2986-11ef-a4c8-92fbcf53809c.png

卷積后尾部無效數據(M-1)

上代碼,我們自己在代碼中劃重點,并調整輸出結果的有效長度范圍:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from scipy.fft import fft
import math


# 創建帶通濾波器
f1 = 40
f2 = 60
filter_len = 80     # 濾波器長度
fs = 1600           # 采樣頻率維持不變


b = signal.firwin(filter_len, [f1, f2], pass_zero=False, fs=fs)


# 設置數據長度
seg_filter_len = 256                            # filter output length of each segment data
segment_len = seg_filter_len - filter_len + 1   # 分段數據目標長度 seg_filter_len = segment_len + filter_len - 1
target_length = segment_len * 50                # 總數據長度


# 而新的時間序列的上限 b
bspace = target_length / fs


# 生成的時間序列為L的整數倍,模擬每次采樣的數據的長度
t = np.arange(0, bspace, 1/fs)


# 產生一個含有300Hz,450Hz和50Hz信號的模擬信號
x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 300 * t) + 0.5 * np.sin(2 * np.pi * 450 * t)


segments = []
for i in range(0, len(x), segment_len):
    segments.append(x[i:i+segment_len])


#Filtering&Overlap-Add processing
# Total outputput buffer, len = target_length + filter_len - 1
filtered_signals = np.zeros(target_length + filter_len - 1)             
for i in range(len(segments)):
    filtered_segment = np.convolve(segments[i], b, mode='full')    # full模式用于保留所有卷積結果 N = L + M -1
    filtered_signals[i*segment_len:i*segment_len+len(filtered_segment)] += filtered_segment # 疊加過程


filtered_signals = filtered_signals#[:target_length] # 保留和原信號等長的部分


#FilterFreqResponse
w, h = signal.freqz(b, 1, fs=fs)
plt.figure()
plt.plot(w, abs(h))
plt.title('Filter Freq Response')
plt.grid()
plt.xlabel('f[Hz]')
plt.ylabel('Amplitude')


# Signal Before filtering & Spectrum
n = len(x)
freq = np.fft.fftfreq(n, 1/fs)
y = np.fft.fft(x)


plt.figure()
plt.subplot(221)
plt.plot(t[:500], x[:500])
plt.title('Original Signal')
plt.subplot(222)
plt.plot(freq[:n//2], np.abs(y[:n//2]*2/n)) # 標幺,繪制前一半
plt.title('SpectrumofOrginalSignal')
plt.grid()


#SignalAfterfiltering & Spectrum
n = len(x)
y = np.fft.fft(filtered_signals)


plt.subplot(223)
# 1. Normal output
plt.plot(t[:500], filtered_signals[:500])
plt.title('Filtered Signal')
plt.subplot(224)
plt.plot(freq[:n//2], np.abs(y[:n//2]*2/n)) # 標幺,繪制前一半
plt.title('Spectrum of Filtered Signal')
plt.grid()


plt.tight_layout()


plt.show()


# 2. End of convolution without end cutoff: for test purpose
plt.figure()
temp = t[8000:8850]
s = filtered_signals[8079:8929]
plt.plot(temp, s)
plt.title('Filtered Signal')
plt.grid()
plt.show()

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數字濾波器
    +關注

    關注

    4

    文章

    273

    瀏覽量

    47531
  • FIR
    FIR
    +關注

    關注

    4

    文章

    151

    瀏覽量

    34104
  • 信號
    +關注

    關注

    11

    文章

    2846

    瀏覽量

    77995

原文標題:數字濾波器(5)—FIR連續采樣分段卷積時域重疊相加法

文章出處:【微信號:安費諾傳感器學堂,微信公眾號:安費諾傳感器學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    運算放大器的同相加法器和反相加法

      運算放大器構成加法器 可以分為同相加法器和反相加法
    發表于 08-05 17:17 ?3.4w次閱讀
    運算放大器的同<b class='flag-5'>相加法</b>器和反<b class='flag-5'>相加法</b>器

    求函數計算序列線性卷積結果

    定義一個函數文件,功能是采用重疊相加法完成無限長序列與有限長序列的線性卷積,然后用該函數文件計算序列x[k]=2k+1,0≤k≤18與序列h[k]={1,2,3,4;k=0,1,2,3}的線性
    發表于 11-29 13:36

    畢業設計_分段卷積MATLAB仿真與DSP實現

    相加法重疊保留法。每種方法先對輸入序列進行分段,再將各段進行快速傅里葉變換,接著進行傅里葉逆變換得到各段輸出,將輸出結果進行處理就得到了最終結果
    發表于 12-25 13:43

    串行結構的FIR濾波器設計(含文檔 代碼資料)

    濾波器,即有限脈沖響應濾波器,顧名思義,是指單位脈沖響應的長度是有限的濾波器。而根據FIR濾波器的結構形式,分為直接型、級聯型、頻率取樣型和快速卷積型。其中直接型又可以采用串行結構、并行結構、分布式
    發表于 04-14 15:20

    相加法電路(由LF155組成的)

    相加法電路(由LF155組成的)
    發表于 01-21 14:16 ?5203次閱讀
    同<b class='flag-5'>相加法</b>電路(由LF155組成的)

    相加法電路

    相加法運算電路為若干個輸入信號從集成運放的反相輸入端引入,輸出信號為它們反相按比例放大的代數和。
    發表于 09-22 11:44 ?3492次閱讀
    反<b class='flag-5'>相加法</b>電路

    相加法器電路原理與同相加法器計算

    相加法器輸入阻抗高,輸出阻抗低 反相加法器輸入阻抗低,輸出阻抗高.加法器是一種數位電路,其可進行數字的加法計算。當選用同相加法器時,如A輸
    發表于 09-13 17:23 ?5.8w次閱讀
    同<b class='flag-5'>相加法</b>器電路原理與同<b class='flag-5'>相加法</b>器計算

    運算電路:同相加法運算電路與反相加法運算電路解析

    加法運算電路能實現多個模擬量的求和運算。圖1所示為一個3個輸入信號的反相加法運算電路。
    發表于 05-15 09:41 ?21.9w次閱讀
    運算電路:同<b class='flag-5'>相加法</b>運算電路與反<b class='flag-5'>相加法</b>運算電路解析

    加法器與減法器_反相加法器與同相加法

    加法器是產生數的和的裝置。加數和被加數為輸入,和數與進位為輸出的裝置為半加器。減法電路是基本集成運放電路的一種,減法電路可以由反相加法電路構成,也可以由差分電路構成。基本集成運放電路有加、減、積分和微分等四種運算。一般是由集成運放外加反饋網絡所構成的運算電路來實現。
    發表于 08-16 11:09 ?16.8w次閱讀
    <b class='flag-5'>加法</b>器與減法器_反<b class='flag-5'>相加法</b>器與同<b class='flag-5'>相加法</b>器

    連續時間系統時域分析的MATLAB實現

    掌握應用 MATLAB 實現對線性時不變連續時間系統的時域分析,即熟悉應用 MATLAB 實現微分方程的求解、連續時間信號卷積計算等。
    發表于 11-10 08:00 ?0次下載
    <b class='flag-5'>連續</b>時間系統<b class='flag-5'>時域</b>分析的MATLAB實現

    相加法器的應用領域

    相加法器(又稱為同相組合器、輸入能量合成器、同相求和器)是一種電子電路器件,主要應用在通信、信號處理、調試和測量等領域。
    的頭像 發表于 06-06 17:21 ?2002次閱讀
    同<b class='flag-5'>相加法</b>器的應用領域

    實用電路分享-同相加法

    相加法器(又稱為同相組合器、輸入能量合成器、同相求和器)是一種電子電路器件,主要應用在通信、信號處理、調試和測量等領域。
    的頭像 發表于 06-13 14:53 ?1.3w次閱讀
    實用電路分享-同<b class='flag-5'>相加法</b>器

    什么是反相加法運算電路?反相加法運算電路與減法運算電路

    在電子技術的海洋中,有一種電路如同數學中的加法器一樣,能夠將不同的信號進行相加處理。這就是被廣泛應用于信號處理領域的反相加法運算電路。
    的頭像 發表于 02-17 15:34 ?7475次閱讀
    什么是反<b class='flag-5'>相加法</b>運算電路?反<b class='flag-5'>相加法</b>運算電路與減法運算電路

    相加法器和反相加法器的區別是什么

    相加法器和反相加法器是運算放大器在模擬電路設計中常用的兩種基本電路結構,它們在信號處理方面有著不同的特性和應用場景。
    的頭像 發表于 05-23 14:35 ?4192次閱讀

    FIR頻域重疊相加法

    傳感器和信號處理僅一線之隔,信號的前后端合理搭配,是我們更準確地感知這個世界的一種基本態度和方式。
    的頭像 發表于 09-09 11:29 ?915次閱讀
    <b class='flag-5'>FIR</b>頻域<b class='flag-5'>重疊</b><b class='flag-5'>相加法</b>
    主站蜘蛛池模板: 午夜在线观看免费视频 | 黄网页在线观看 | 亚洲热热久久九九精品 | 亚洲一区中文字幕在线观看 | ts 人妖 另类 在线 | 同性恋激情视频 | 日本在线视 | 日本特黄特色视频 | 在线三级网| 国产精品虐乳在线播放 | 欧美成人69 | 激情五月网站 | 欧美一区二区三区男人的天堂 | 婷婷深爱五月 | 欧美zooz人与禽交 | 最近视频在线播放免费观看 | 欧洲熟色妇 | 欧美黄色片免费观看 | 黄色短视频免费看 | 开心综合网| chinesevideo普通话对白 | 免费欧美黄色网址 | 91中文在线 | 国产一级片免费 | 黄a在线观看 | 成人精品亚洲人成在线 | 午夜影院免费版 | 亚洲一区日本 | 午夜在线观看完整高清免费 | 午夜69成人做爰视频网站 | 中国美女毛片 | 天天综合网天天做天天受 | 免费一级特黄特色大片 | 在线视频免费观看 | 三级在线观看视频网站 | 最近2018中文字幕免费看2019 | 亚洲一区二区三 | 婷婷激情小说 | 情趣店上班h系列小说 | 免费福利片2022潦草影视午夜 | 天堂看动漫 |