High pass filter 0.01 Hz สำหรับ EEG ที่ลอยช้า


10

ฉันกำลังพยายามสร้างตัวกรอง pass pass สูงสำหรับชุดข้อมูล electroencephalographic (EEG) เพื่อที่จะกำจัด drifts ที่ช้ามาก ๆ อย่างไรก็ตามความถี่ประมาณ 0.3 Hz มีความสำคัญมากสำหรับการวิจัยข้อมูลเหล่านี้ให้บริการ

ฉันใช้ Matlab และฉันลองทำสิ่งต่าง ๆ ดูเหมือนว่าการลดทอน dB ที่ต่ำมากซึ่งมี 3 dB นั้นใช้ได้กับตัวกรอง FIR ตัวอย่างเช่นฉันใช้ที่:

h=fdesign.highpass('Fst,Fp,Ast,Ap',0.005,0.01,3,1,250); % i needed to cut 
d=design(h,'butter');
fvtool(d)

อย่างไรก็ตามตัวกรองนี้ทำ dc ดริฟท์ที่จุดเริ่มต้นของข้อมูลและฉันจะไม่ต้องการหลวมดาต้าพอยน์แรกเหล่านี้

ฉันได้อ่านหน้าเว็บของคุณแล้วว่าแนวคิดที่ฉลาดคือการออกแบบตัวกรองสัญญาณความถี่ต่ำซึ่งต่อมาฉันจะลบข้อมูลจริงออก ฉันใช้ตัวกรอง Equiripple และทำงานได้ แต่ยกลิฟท์พื้นฐาน ฉันไม่ต้องการเรียกใช้การเอาออกโดยเฉลี่ยตอนนี้อยู่ในขั้นตอนต่อไปในโปรโตคอลการวิเคราะห์

ข้อเสนอแนะใด ๆ


1
ดังนั้นปัญหาเป็นเพียงการตอบสนองเริ่มต้นของตัวกรองหรือไม่ ข้อมูลที่บันทึกไว้ล่วงหน้านี้เป็นข้อมูลที่คุณสามารถเติมด้วยศูนย์หรือเป็นแบบเรียลไทม์ได้หรือไม่
endolith

วิธี lowpass-and-subtract จะประสบปัญหาที่คุณเห็นด้วย ปัญหาคือตัวกรองทุกตัวมีความล่าช้า ฟิลเตอร์ที่มีความคมต่ำเช่นเดียวกับที่คุณต้องการอาจมีความล่าช้านานมาก ฉันไม่แน่ใจว่าทำไมคุณจะทำการลบโดยเฉลี่ยต่อไป อัตราขยาย DC ของตัวกรองที่คุณแสดงเป็นศูนย์ดังนั้นจะไม่มีค่าเฉลี่ยที่เห็นได้ในการลบ (ยกเว้นสำหรับช่วงเวลาชั่วคราวที่จุดเริ่มต้นของเอาต์พุตเนื่องจากความล่าช้าของตัวกรอง)
Jason R

คำตอบ:


6

t=0

NNNg(t)=g(t)=f(t)N ตัวอย่างของเอาต์พุตและการชน DC ควรจะหายไปอย่างหวัง

t=0


6

ดูฟังก์ชั่นตัวกรอง มันให้การตอบสนองเป็นศูนย์และตอบสนองขั้นตอนที่สมบูรณ์แบบ โดยเฉพาะอย่างยิ่งคุณสมบัติการตอบสนองขั้นตอนของตัวกรองตัวกรองอาจแก้ไขปัญหาของคุณ


0

ฉันทำเคล็ดลับที่คุณ rtollert อธิบายและคิดว่ามันเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้

หากคุณไปตามเส้นทางของการสุ่มตัวอย่างอย่างต่อเนื่อง / การชดเชยฮาร์ดแวร์ประสิทธิภาพอาจทำให้คุณสนใจDC blockersตามที่อธิบายโดย Randy Yates และ Richard Lyons ใน dsp Tips & Tricks มีนาคม 2551


0

ฉันลองบางสิ่งที่ใช้งานได้ดีกับเครื่องขยายเสียงที่ระบุ รหัส MATLAB อยู่ที่นี่: https://sites.google.com/site/marialstavrinou/home/dc-offset-removal-filter-in-matlab


-1

คุณไม่สนใจค่า DC ที่แน่นอนใช่ไหม

ทำไมไม่เพิ่มออฟเซ็ตสแตติกเข้ากับข้อมูลของคุณเพื่อให้จุดข้อมูลแรกเป็นศูนย์?

แน่นอนว่าคุณจะต้องเพิ่มออฟเซ็ตลงในดาต้าพ้อยท์ทุกตัว แต่มันจะหลีกเลี่ยงปัญหาการตอบสนองขั้นตอนใหญ่ที่คุณมีกับตัวกรอง

ตัวกรองเริ่มต้นอย่างมีประสิทธิภาพถึงศูนย์ ดังนั้นเมื่อข้อมูลของคุณเริ่มต้นตัวกรองจะเห็นบันไดใหญ่จากศูนย์ถึงระดับ DC ใด ๆ ที่คุณมี

เพียงเพิ่มออฟเซ็ตเพื่อลบขั้นตอน


-1

ทำไมไม่ลองลบโดยเฉลี่ยล่ะ? ขั้นตอนต่อมาที่ทำ "อีกครั้ง" จะไม่มีผลกระทบ (มันจะทำให้ค่าศูนย์ลดลง)


นี่เป็นคำถามมากกว่าและไม่ใช่คำตอบสำหรับคำถาม อาจมีความเหมาะสมในการแสดงความคิดเห็นถึงจุดหนึ่งแม้ว่าคำถามจะเก่ามาก แต่ก็ดูเหมือนว่าไม่มีจุดหมายในช่วงหัวเลี้ยวหัวต่อนี้
Sam Maloney
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.