การปรับสัญญาณ / การตรวจจับการสะดุดในกระแสข้อมูลราบรื่นขึ้น


11

(แก้ไข: คำถามนี้ตามมาจากการแยกข้อมูลบัตรแถบแม่เหล็กจาก WAV ดิบ )

นี่คือสัญญาณของฉัน (บรรทัดบนสุด) และใช้ตัวกรอง IIR พื้นฐาน (บรรทัดล่างสุด)

ป้อนคำอธิบายรูปภาพที่นี่

(แก้ไข: งานของฉันคือการแบ่งสัญญาณออกเป็นไบนารี 0 (ความถี่ F) และไบนารี 1 (ความถี่ 2F) - นั่นคือสาเหตุที่เรียกว่า F2F ดังนั้นฉันต้องประมวลผลในลักษณะที่รับประกันไม่มียอดปลอมในขณะที่ ภาพหน้าจอทำให้ดูไม่สำคัญมีปัญหาที่อาจเกิดขึ้นจากการเพิ่มขึ้นเป็นสองเท่าและการได้รับผลบวกที่ผิดพลาดในร่องระหว่างยอดเขาจริง)

คำถามของฉันคือมีวิธีใดบ้างที่ทำให้สัญญาณนี้ราบรื่น IIR เป็นทางออกที่ดีที่สุดของฉันหรือไม่

ฉันเห็นความเป็นไปได้อย่างน้อยสามประการ:

  • IIR y [n] = 0.9 * y [n-1] + 0.1 * x [n] โดยที่ y [x] = 0 เมื่อ x <0

  • ค่าเฉลี่ยเคลื่อนที่ / หน้าต่าง - วางเส้นโค้งของเบลล์ที่มีพื้นที่ 1.0 เหนือวงบอก w = 10 ตัวอย่างแต่ละข้างและรวม bellSmooth (x) = อินทิกรัล [xw, x + w] {bell (k) .samp (k)} dk

  • กำหนดความถี่ที่คาดหวังและ FFT / ลบถังขยะคำสั่งที่สูงขึ้น / กลับ FFT

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

มีวิธีอื่นอีกไหม?


6
คุณพยายามรักษาลักษณะของสัญญาณดั้งเดิมไว้อย่างไร? ตัวอย่างเช่นช่วงเวลาระหว่างจุดสูงสุด, ความสูงของจุดสูงสุด, จำนวนเวลาที่เกินขีด จำกัด อย่างอื่นหรือไม่
Martin Thompson

ช่วงเวลาระหว่างยอดเขา ... และแม้กระทั่งสิ่งนี้ไม่จำเป็นต้องแม่นยำเกินไป - มันเป็นสัญญาณ F2F (ฉันจะแก้ไขคำถามเพื่ออ้างอิงแหล่งสัญญาณและให้บริบท)
P i

นี่สำหรับการประมวลผลออนไลน์หรือออฟไลน์หรือไม่

หัวข้อวิทยานิพนธ์ของฉันคือการทำให้จุดรบกวนเรียบในกระแสข้อมูล คุณชอบบทความหรือหัวข้อนี้หรือไม่?

คำตอบ:


6

ผลของการหาค่าเฉลี่ย

การใช้ตัวกรองค่าเฉลี่ยเคลื่อนที่จะทำให้ความผิดปกติของสัญญาณราบรื่นขึ้น เสียงจะกลายเป็น E / N โดยที่ N คือความยาวของตัวกรองค่าเฉลี่ยเคลื่อนที่ ผลข้างเคียงของการใช้แมสซาชูเซตส์คือสัญญาณที่มีความกว้างและตื้นขึ้น

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

อัลกอริธึม การตรวจจับจุดสูงสุดการตรวจจับจุดสูงสุดเป็นปัญหาที่พบบ่อยในปัญหาทางวิศวกรรม 9/10 (ไม่ใช่จริงๆ แต่ TON ขึ้นอยู่กับพวกเขา)

โดยทั่วไปนี่คือสิ่งที่ทำ:

ค่ามัธยฐาน Thresholding

1) Look for all peaks in your signal. (i.e., a point that is larger than the two
   adjacent points
2) take this list of points and for each one of them compute:
   med_threshold = median(Peak,Width) + constantThresholmedian   where median is the
   median value of the data centered at "Peak" with Width being the number of 
   points to look at.
       a) The Width(usually written as Lambda in literature) and constantThreshold
          (usually written as C) are determined by trial and error and using the ROC
          curve (Acronym below)
3) if the peak's magnitude is above this threshold accept it as a true peak. 
   Else: Discard it, its a false peak
4) Generate a Receiver Operating Characteristic Curve(ROC) to how well the algorithm
   is performing.

นี่คือตัวอย่าง:

suppose we have the signal X = [ 0 0 0 0 1 3 **9** 2 1 1 **2** 1 1 ] 
1) 9 and 2 are both potential peaks 
2) Lets use a window of 5 and  a threshold =2
so at 9 we have [1 3 9 1 2] -> [1 1 2 3 9]  so Median(9,5) = 2
9 > 2 +2, therefor its a peak
Lets take a look at 2: [ 1 1 2 1 1] -> [1 1 1 1 2 ] Median(2,5) = 1
2 < 1+2, therefor it is NOT a peak. 

การกำหนดความถี่

ตอนนี้คุณได้พบเวลาที่มีการแปลยอดเขาพยายามหาความถี่:

1) Use the locations of the peaks to generate a pulse train
      a) this means create sum(Dirac_delta[t-L(n)]) where L(n) is the nth time that 
      you've localized through median thresholding
2) Apply FFT Algorithm
3) Look for largest peak. 

การประมาณความถี่สำรอง

1) Think of this like a beat in a piece of music (I learned about thresholding by
   researching Onset Detection.
2) Compute the average time distance between detected peaks.
3) now call your results BPM or PPM (pulses per minute) 

แนวทางการวิจัยเพิ่มเติม

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

การตรวจจับการโจมตีเป็นพื้นที่ขนาดใหญ่ในการวิจัยสืบค้นข้อมูลเพลง มันใช้เพื่อกำหนดเมื่อมีการเล่นโน้ต

ตัวอย่างเพลงของการโจมตี

หากคุณคิดว่าสัญญาณหัวเทปของคุณเป็นสัญญาณตัวอย่างสูงคุณสามารถใช้อัลกอริทึมมากมายที่คุณจะพบในบทความนี้:

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf


"[1 3 9 1 2]" คุณจะได้รับหมายเลข 2 อย่างไรถ้าหน้าต่างของคุณคือ width = 5
Spacey

สังเกตว่าฉันเรียงตัวเลขกันอย่างไร มัธยฐานคือตัวเลขกลางในชุดคำสั่ง [1 1 2 3 9] <- สั่ง, หมายเลขกลางคือ 2
CyberMen

ดูตัวเลขของคุณพวกเขาคือ [1 3 9 1 1] คุณได้รับ 2 จากที่ไหน
Spacey

@Mammammad ทำการแก้ไขไม่กี่ครั้งในขณะที่ทำงานอยู่ถูกลบไปแล้ว แก้ไขแล้ว.
CyberMen

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