การแปลงแบบ DFT ใช้คลื่นสามเหลี่ยมแทนคลื่นบาป


9

เรารู้ว่า DFT (การแปลงฟูริเยร์แบบแยก) แบ่งสัญญาณเป็นคลื่นความถี่ไซน์หลายความถี่ มีการแปลงที่ทำสิ่งเดียวกัน แต่สำหรับคลื่นสามเหลี่ยม

สำหรับจุดประสงค์ของฉันฉันแค่พูดคุยเกี่ยวกับสัญญาณ 1-d (เช่นแรงดันไฟฟ้า ฯลฯ ) ฉันกำลังศึกษาข้อมูลการลงทุนในตลาดหุ้นในอดีตและฉันแค่ต้องการดูการกลับตัวของหุ้นบางตัว กล่าวอีกนัยหนึ่งฉันต้องการดำเนินการ "low-pass" ในราคาหุ้นโดยใช้การแปลงนี้

แก้ไข: ถ้าใช่ฉันจะทำอย่างไร


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

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

ฉันกำลังศึกษาข้อมูลตลาดหุ้นในอดีตและฉันแค่ต้องการดูการกลับตัวของหุ้นบางตัว กล่าวอีกนัยหนึ่งฉันต้องการที่จะดำเนินการ "ต่ำผ่าน" ในราคาหุ้นโดยใช้การแปลงนี้
hassan789

คำตอบ:


8

ที่อยู่ใกล้ orthogonal เปลี่ยนฉันรู้ว่าอาจจะตอบสนองความต้องการของคุณเป็นลาดแปลง มันขึ้นอยู่กับคลื่นของฟันเลื่อย (ish) แต่ฟังก์ชั่นพื้นฐานบางอย่างนั้นคล้ายกับคลื่นสามเหลี่ยม:

ฟังก์ชั่นพื้นฐานเอียง

(ที่มา: การแปลงฟูริเยร์ประยุกต์ )

มันได้รับการพัฒนาสำหรับการเข้ารหัส / บีบอัดภาพ แต่ดูเหมือนว่าเป็นวิธีแรกที่เหมาะสมสำหรับการวิเคราะห์แนวโน้ม / การกลับรายการเชิงเส้นในระยะยาวของข้อมูลทางการเงิน ดูเหมือนว่าเอกสารสำคัญหลายฉบับที่อธิบายการแปลงนั้นมีให้บริการออนไลน์ (ฟรี) แต่เอกสารต่อไปนี้อาจมีรายละเอียดเพียงพอที่จะนำบางสิ่งมาใช้:

วิธีการตัดปลายสำหรับการคำนวณการแปลงลาดเอียงด้วยแอปพลิเคชันเพื่อการประมวลผลภาพ MM Anguh, RR Martin IEEE Trans การสื่อสาร 43 (6), 2103-2110, 1995. ( ลิงก์ผู้เขียน ) ( ลิงค์ PDF )

โดยเฉพาะอย่างยิ่งดูส่วนที่ III ซึ่งให้ความสัมพันธ์แบบเรียกซ้ำที่ใช้ในการสร้างเมทริกซ์การแปลง


ดูมีแนวโน้ม!
hassan789

ใช้รหัส Matlab นี้: eeweb.poly.edu/iselesni/slantlet/index.htmlฉันจะให้ข้อเสนอแนะในไม่ช้า ...
hassan789

ฉันไม่คิดว่าการแปลงของ Slantlet เป็นสิ่งเดียวกับการแปลงของ Slant ทั้งสองอย่างนี้อาจมีประโยชน์
เก็บข้อมูล

4

อันดับแรก B-splines คือรูปสามเหลี่ยมและมีอัลกอริทึมที่มีอยู่เพื่อแสดงสัญญาณโดยพลการเป็นผลรวมของ B-splines ดังที่ได้กล่าวมาเส้นโค้งเหล่านี้ไม่ได้สร้างเป็นออร์โทบิเซีย แต่มันไม่จำเป็นต้องเป็นสิ่งที่แย่

จุดเริ่มต้นที่ดีคือบทความโดย Unser ในการประมาณ B-spline ที่มีประสิทธิภาพ http://bigwww.epfl.ch/publications/unser9301.pdf


1
นี่เป็นการเริ่มต้นที่ดีและจริง ๆ แล้วอาจจะดีกว่าสำหรับฉันโดยเฉพาะถ้าฉันสามารถใช้พาราโบลา b-splines แทนลูกบาศก์ได้ .... จะอ่าน / เรียนรู้เพิ่มเติมเกี่ยวกับสิ่งนี้เช่นกัน
hassan789

2

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

คุณสมบัติของการเปลี่ยนมุมฉาก

การเปลี่ยนแปลงมุมฉาก


อืม ... ฉันไม่ได้ก้าวหน้าเมื่อพูดถึง orthogonality ... พูดตามตรงฉันไม่เข้าใจความหมายของ orthogonality ท้ายที่สุดหมายความว่าต้องใช้ CPU มากขึ้นในการแปลง (เต็มแปลงเคอร์เนลเทียบกับเคอร์เนลแปลงกระจัดกระจาย)?
hassan789

0

คุณสามารถใช้ adjoint ของผู้ประกอบการรวม (เช่น cumsum) ตามด้วยการแปลง Fast Walsh-Hadamard

เช่นใน Matlab

n = 16;
H = fwht(eye(n))*sqrt(n); % Walsh-Hadamrd in full unitary matrix form
S = cumsum(eye(n)); % the integrator in full matrix form
T = H*S';  % cumsum along the rows of the W-H 

ส่วนของค่าบวกคงที่ใน H รวมเข้าด้วยกันเพื่อทำให้เกิดความลาดเอียงในคลื่นของฟันเลื่อย ค่าลบกลายเป็นลดลง

T ไม่รวมซึ่งมีผลกระทบต่อการยืดมิติ ในด้านที่สว่างมันมีการผกผันอย่างรวดเร็ว: อีกสิ่งที่ตามมาด้วยคนแปลกหน้า

D = inv(S');  % difference matrix with an extra row at bottom for full rank
Tinv = D*H;   % inverse of T

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