คำถามติดแท็ก smoothing

5
มีศัพท์เทคนิคหรือไม่สำหรับวิธีง่ายๆในการทำให้สัญญาณเรียบ
ประการแรกฉันยังใหม่กับ DSP และไม่มีการศึกษาจริงในนั้น แต่ฉันกำลังพัฒนาโปรแกรมสร้างภาพเสียงและฉันเป็นตัวแทนของอาร์เรย์ FFT เป็นแถบแนวตั้งเช่นเดียวกับการสร้างภาพคลื่นความถี่ทั่วไป ปัญหาที่ฉันมีคือค่าสัญญาณเสียงเปลี่ยนไปเร็วเกินไปที่จะสร้างเอาต์พุตภาพที่น่าพอใจถ้าฉันเพิ่งแมปค่า FFT โดยตรง: ดังนั้นฉันจึงใช้ฟังก์ชั่นง่าย ๆ กับค่าต่างๆเพื่อ "ทำให้เรียบ" ผลลัพธ์: // pseudo-code delta = fftValue - smoothedFftValue; smoothedFftValue += delta * 0.2; // 0.2 is arbitrary - the lower the number, the more "smoothing" กล่าวอีกนัยหนึ่งฉันกำลังใช้ค่าปัจจุบันและเปรียบเทียบกับค่าล่าสุดจากนั้นเพิ่มเศษส่วนของเดลต้านั้นให้เป็นค่าสุดท้าย ผลลัพธ์จะเป็นดังนี้: ดังนั้นคำถามของฉันคือ: นี่เป็นรูปแบบหรือฟังก์ชั่นที่ได้รับการยอมรับเป็นอย่างดีซึ่งคำศัพท์นี้มีอยู่แล้ว คำนี้คืออะไร? ฉันใช้ "การปรับให้เรียบ" ด้านบน แต่ฉันรู้ว่านี่หมายถึงบางสิ่งที่เฉพาะเจาะจงมากใน DSP และอาจไม่ถูกต้อง นอกเหนือจากนั้นอาจเกี่ยวข้องกับซองจดหมายที่มีปริมาณมาก …

4
Bag of Tricks สำหรับสัญญาณ Denoising ในขณะที่ยังคงการเปลี่ยนผ่านที่คมชัด
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ในการประมวลผลสัญญาณ Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันรู้ว่าสิ่งนี้ขึ้นอยู่กับสัญญาณ แต่เมื่อหันหน้าไปทางสัญญาณรบกวนใหม่กระเป๋าของคุณมีเล่ห์เหลี่ยมอะไรบ้างสำหรับพยายามที่จะ denoise สัญญาณในขณะที่ยังคงมีการเปลี่ยนแปลงที่คมชัด (เช่นการเฉลี่ยแบบง่าย ๆ ฉันมักจะพบว่าตัวเองกำลังเผชิญกับคำถามนี้และไม่รู้สึกว่าฉันรู้ว่าสิ่งที่ฉันควรจะลอง (นอกเหนือจาก splines แต่พวกเขาสามารถเคาะการเปลี่ยนแปลงที่คมชัดอย่างถูกต้องเช่นกัน) ป.ล. เป็นหมายเหตุด้านข้างถ้าคุณรู้วิธีการที่ดีในการใช้เวฟเล็ตให้ฉันรู้ว่ามันคืออะไร ดูเหมือนว่าพวกเขามีศักยภาพมากมายในพื้นที่นี้ แต่ในขณะที่มีเอกสารบางส่วนใน 90s ที่มีการอ้างอิงเพียงพอที่จะแนะนำวิธีการของกระดาษที่เปิดออกได้ดีฉันไม่สามารถหาสิ่งที่เกี่ยวกับวิธีการใด ปีที่ผ่านมา แน่นอนว่าวิธีการบางอย่างกลายเป็น "สิ่งแรกที่ต้องลอง" โดยทั่วไปตั้งแต่นั้นมา

5
ตัวกรองที่ปรับให้เรียบของ Savitzky-Golay มีระยะห่างไม่เท่ากัน
ฉันมีสัญญาณที่วัดได้ที่ 100Hz และฉันจำเป็นต้องใช้ตัวกรองการปรับให้เรียบของ Savitzky-Golay กับสัญญาณนี้ อย่างไรก็ตามในการตรวจสอบอย่างใกล้ชิดสัญญาณของฉันไม่ได้ถูกวัดที่อัตราคงที่ที่สมบูรณ์แบบเดลต้าระหว่างการวัดอยู่ระหว่าง 9.7 ถึง 10.3 มิลลิวินาที มีวิธีใช้ตัวกรอง Savitzky-Golay กับข้อมูลที่มีระยะห่างไม่เท่ากันหรือไม่? มีวิธีอื่นที่ฉันสามารถสมัครได้หรือไม่?

3
ตัวกรองเชิงเส้น Savitzky – Golay กับ IIR หรือตัวกรองเชิงเส้น FIR
ตัวกรอง IIR / FIR ดั้งเดิม (lowpass เพื่อกำจัดการแกว่งความถี่สูง) เช่นค่าเฉลี่ยเคลื่อนที่ หรือตัวกรองSavitzky-Golay ทุกคนสามารถเป็นประโยชน์ในการทำให้สัญญาณเรียบขึ้นเช่นสัญญาณซองจดหมาย: ตัวกรอง Savitzky-Golay จะน่าสนใจมากกว่าแอพพลิเคชั่น lowpass แบบคลาสสิกอย่างไร อะไรทำให้แตกต่างจากตัวกรองมาตรฐานและมันเพิ่มอะไรเมื่อเปรียบเทียบกับตัวกรองมาตรฐาน มันปรับตัวเองเข้ากับข้อมูลอินพุตหรือไม่ มันจะดีกว่าสำหรับการรักษาชั่วคราว? คุณเคยอยู่ในสถานการณ์ทางวิศวกรรมมาแล้ววันหนึ่งเมื่อคุณตัดสินใจว่า"ลองใช้ตัวกรอง SG แทนค่าเฉลี่ยเคลื่อนที่หรือ lowpass FIR ตัวอื่นดีกว่าเพราะสิ่งนี้กับสิ่งนี้และสิ่งนี้ ... " ? ถ้าอย่างนั้นคำถามนี้เหมาะสำหรับคุณ!

2
การหาจุดสูงสุดในท้องถิ่นระหว่างตัวอย่าง
ฉันมี nnn ตัวอย่างที่ไม่ต่อเนื่องของสัญญาณคลื่นไหวสะเทือน Y[ n ]y[n]y[n]: ฉันต้องการค้นหา maxima ท้องถิ่นในสัญญาณ การทดสอบที่ไร้เดียงสาสำหรับถ้า Y[ n ]y[n]y[n] สูงสุดคือ: Y[ n ] : m a x i m a ถ้า y[ n ] > y[ n - 1 ] และ y[ n ] > y[ n + 1 ]y[n]:maxima if y[n]>y[n−1] and y[n]>y[n+1]y[n]: maxima \textbf{ …

2
วิธีการหาค่าประมาณที่ราบรื่นของอนุพันธ์และอนุพันธ์อันดับสองของสัญญาณ
ฉันมีตัวอย่างสัญญาณที่ ΔtΔt\Delta t: fi(ti=iΔt)fi(ti=iΔt)f_i(t_i=i\Delta t) ที่ไหน i=0,…,n−1i=0,…,n−1i = 0,\ldots,n-1. ฉันต้องการหาอนุพันธ์อันดับหนึ่งและสองของสัญญาณ:f′(t)f′(t)f'(t) และ f′′(t)f″(t)f''(t). ความคิดแรกของฉันคือการประเมินอนุพันธ์โดยความแตกต่างกลาง: f′(ti)f′′(ti)=f(ti+1)−f(ti−1)2Δt=f(ti+1)−2f(ti)+f(ti−1)(Δt)2f′(ti)=f(ti+1)−f(ti−1)2Δtf″(ti)=f(ti+1)−2f(ti)+f(ti−1)(Δt)2\begin{align} f'(t_{i})&=\frac{f(t_{i+1})-f(t_{i-1})}{2\Delta t}\\ f''(t_{i})&=\frac{f(t_{i+1})-2f(t_{i})+f(t_{i-1})}{(\Delta t)^2} \end{align} แต่สัญญาณอาจมีจำนวนมากของเสียงความถี่สูงที่อาจก่อให้เกิดความผันผวนอย่างรวดเร็วในและ''f′f′f'f′′f″f'' สิ่งที่จะเป็นวิธีที่ดีที่สุดที่จะหา "เรียบ" ประมาณการของและ ?f′f′f'f′′f″f''

1
เปรียบเทียบการเปลี่ยนแปลงพิกเซลย่อยระหว่างสเป็คตรัมสองครั้งโดยตรงและรับข้อผิดพลาดที่น่าเชื่อถือ
ฉันมีสเปกตรัมสองอันของวัตถุทางดาราศาสตร์เดียวกัน คำถามสำคัญคือ: ฉันจะคำนวณการเปลี่ยนแปลงสัมพัทธ์ระหว่าง spectra เหล่านี้และได้รับข้อผิดพลาดที่แม่นยำในการเปลี่ยนแปลงนั้นได้อย่างไร รายละเอียดเพิ่มเติมถ้าคุณยังอยู่กับฉัน แต่ละสเปกตรัมจะเป็นอาร์เรย์ที่มีค่า x (ความยาวคลื่น), ค่า y (ฟลักซ์) และข้อผิดพลาด การเปลี่ยนความยาวคลื่นจะเป็นพิกเซลย่อย สมมติว่าระยะห่างของพิกเซลเป็นประจำและมีเพียงการเลื่อนความยาวคลื่นเดียวที่ใช้กับสเปกตรัมทั้งหมด ดังนั้นคำตอบสุดท้ายจะเป็นดังนี้: 0.35 +/- 0.25 พิกเซล spectra ทั้งสองนั้นจะมีความต่อเนื่องที่ไม่มีรูปแบบมาแทนที่ด้วยคุณสมบัติการดูดซับที่ค่อนข้างซับซ้อน (dips) ที่ไม่ได้สร้างแบบจำลองได้ง่าย (และไม่ได้เป็นคาบ) ฉันต้องการหาวิธีที่เปรียบเทียบสเปกตรัมทั้งสองโดยตรง สัญชาตญาณแรกของทุกคนคือการทำครอสสัมพันธ์ แต่ด้วยการเลื่อนพิกเซลย่อยคุณจะต้องสอดแทรกระหว่างสเปคตรัม วิธีการปัจจุบันของฉันคือทำให้ข้อมูลราบรื่นขึ้นโดยใช้เคอร์เนลแบบเกาส์เซียนแล้วจึงทำให้ผลที่ได้เป็นไปอย่างราบรื่นและเปรียบเทียบสเปกตรัมสองอันที่แยกกัน - แต่ฉันไม่ไว้ใจ (โดยเฉพาะข้อผิดพลาด) ไม่มีใครรู้วิธีที่จะทำอย่างถูกต้องหรือไม่ นี่คือโปรแกรมไพ ธ อนสั้น ๆ ที่จะสร้างสเปกตรัมของเล่นสองอันที่ถูกเลื่อนด้วย 0.4 พิกเซล (เขียนเป็น toy1.ascii และ toy2.ascii) ที่คุณสามารถเล่นได้ แม้ว่าโมเดลของเล่นนี้จะใช้คุณสมบัติแบบเกาส์เซียนอย่างง่าย แต่สมมติว่าข้อมูลจริงไม่สามารถใช้กับโมเดลแบบง่ายได้ import numpy as …

1
ฉันจะใช้ตัวกรอง Savitzky Golay เพื่อค้นหา maxima ท้องถิ่น (ระหว่างตัวอย่าง) ในสัญญาณ 1D ที่สุ่มตัวอย่างได้อย่างไร
ฉันมีสัญญาณคลื่นไหวสะเทือน y (i): ที่นี่ฉันได้พบหนึ่งสูงสุด: i = 152.54, y = 222.29 ด้วยตนเองและลงจุดด้วยสีแดง ฉันต้องการค้นหา maxima ทั้งหมดโดยอัตโนมัติ ฉันอ่านว่าตัวกรอง Savitzky Golay (SGF) สามารถใช้ในการหาค่าประมาณที่ราบรื่นของสัญญาณและอนุพันธ์ของมันและข้อดีอย่างหนึ่งของ SGF ก็คือมันสามารถรักษา minima และ maxima ได้ดีกว่าตัวกรองอื่น ๆ มันฟังดูดีสำหรับการใช้งานของฉัน ฉันพบสคริปต์ Matlab ที่สร้างค่าสัมประสิทธิ์ SGF และใช้สิ่งนี้เพื่อหาว่าค่าสัมประสิทธิ์ SGF ลำดับที่ 4 สำหรับอนุพันธ์ ฉันเขียนสคริปต์ Matlab ตัวเล็ก ๆ ค้นหาอนุพันธ์ของสัญญาณโดยการสังสัยสัญญาณด้วยสัมประสิทธิ์ SGF ลำดับที่ 4 สำหรับอนุพันธ์ ค้นหาคู่ของตัวอย่าง (i, i + 1) …

1
การคำนวณอนุพันธ์ที่ราบเรียบของสัญญาณโดยใช้ความแตกต่างกับ step = convolving ที่มากขึ้นด้วยหน้าต่างสี่เหลี่ยม
ฉันมีตัวอย่างสัญญาณที่ Δ t : fฉัน( t i = i Δ t )Δt:fi(ti=iΔt)\Delta t: fi(ti=i\Delta t)โดยที่ i = 0..n-1 ฉันต้องการหาอนุพันธ์อันดับแรกของสัญญาณ: f '(t) ความคิดแรกของฉันคือประเมินโดยความแตกต่างที่สำคัญ: f′(ti)=f(ti+1)−f(ti−1)2Δtf′(ti)=f(ti+1)−f(ti−1)2Δtf'(t_i) =\frac{f(t_{i+1})−f(t_{i−1})}{2\Delta t} อย่างไรก็ตามสัญญาณอาจมีเสียงรบกวนความถี่สูงมากซึ่งอาจทำให้เกิดความผันผวนอย่างรวดเร็วใน f ' ฉันเดาว่าสิ่งที่เหมาะสมอาจทำให้สัญญาณราบรื่นโดยการปรับฟังก์ชั่นหน้าต่างเช่นฮันแล้วหาอนุพันธ์จากความแตกต่าง เพื่อนร่วมงานแนะนำวิธีที่เร็วกว่าในการหาค่าประมาณที่ราบรื่นของอนุพันธ์: ใช้ความแตกต่างที่เป็นศูนย์กลางของตัวอย่าง 2n โดยที่ n >> 1: f′(ti)=f(ti+n)−f(ti−n)2nΔtf′(ti)=f(ti+n)−f(ti−n)2nΔtf'(t_i) =\frac{f(t_{i+n})−f(t_{i−n})}{2n\Delta t} แน่นอนว่าการคำนวณนี้จะเร็วกว่าการสังเกตุด้วยฟังก์ชั่นหน้าต่างเป็นครั้งแรก แต่มันเป็นวิธีแก้ปัญหาที่ดีหรือไม่? หากเราสร้างผลรวม: S=2Δt[f′(ti−n+1)+f′(ti−n+2)+..+f′(ti+n−1)]S=2Δt[f′(ti−n+1)+f′(ti−n+2)+..+f′(ti+n−1)]S=2\Delta t[f'(t_{i-n+1})+f'(t_{i-n+2})+..+f'(t_{i+n-1})] และขยายอนุพันธ์แต่ละอันด้วยความแตกต่างส่วนกลางด้วยขั้นตอน ΔtΔt\Delta t: S=f(ti−n+2)−f(ti−n)+f(ti−n+3)−f(ti−n+2)+..+f(ti+n)−f(ti+n−2)S=f(ti−n+2)−f(ti−n)+f(ti−n+3)−f(ti−n+2)+..+f(ti+n)−f(ti+n−2)S=f(t_{i-n+2})-f(t_{i-n})+f(t_{i-n+3})-f(t_{i-n+2})+..+f(t_{i+n})-f(t_{i+n-2}) เงื่อนไขทั้งหมดยกเว้นการยกเลิกสองรายการ: S=f(ti+n)−f(ti−n)=2nΔtf′(ti)S=f(ti+n)−f(ti−n)=2nΔtf′(ti)S=f(t_{i+n})-f(t_{i-n})=2n\Delta …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.