การแปลงฟูริเยร์อย่างรวดเร็ว - จำนวนรอบที่ไม่ใช่จำนวนเต็มในรูรับแสง FFT


15

มีหัวข้อสนทนาและคำตอบที่ยอดเยี่ยมอยู่สองสามข้อในเว็บไซต์นี้ (eletronics.se) เกี่ยวกับทฤษฎีการแปลงฟูริเยร์ ฉันพยายามใช้เครื่องมือการจำลอง (MS Excel :) เดียวกัน

ฉันมีปัญหาการตีความและการใช้งานบางอย่างเกี่ยวกับเรื่องเดียวกัน ฉันพยายามวิเคราะห์รูปคลื่นแรงดันไฟฟ้าที่ 50 เฮิร์ตซ์ อย่างไรก็ตามข้อมูลด้านล่างนี้สร้างเพียงข้อมูลจำลองที่พยายามสร้างกรอบแนวคิดสำหรับการนำไปใช้กับหน่วยความจำและกำลังการประมวลผลที่ จำกัด ตัวประมวลผลต้นทุนต่ำแบบฝังตัว 16 บิต


ETA (30 พฤษภาคม 2555)

TL; DR เวอร์ชัน:

มันไปได้โดยไม่ต้องพูดถึง electronics.se แต่ฉันใช้หน่วยความจำและกำลังประมวลผลฝังตัวโปรเซสเซอร์ จำกัด

มีคำถามสองสามข้อที่ยังไม่ได้ตอบ:

  1. การเรียงหน้าต่างเป็นอย่างไรบนตัวอย่างที่ฉันมีโดยไม่มีการเพิ่ม footprint หน่วยความจำของอัลกอริทึมอย่างมีนัยสำคัญ? ฉันอยากให้สิ่งเหล่านี้เป็นคำอธิบายทีละขั้นตอนเนื่องจากฉันค่อนข้างใหม่กับ DSP
  2. ทำไมขนาดลดลงครึ่งหนึ่งเมื่อฉันสอดแทรก 41 ตัวอย่างเพื่อให้ได้ 32 แต่ยังคงเหมือนเดิม (ยกเว้นเสียงรบกวน) เมื่อฉันสอดแทรกพวกเขาให้ได้ 64

ฉันประกาศความโปรดปรานกับคำถามด้วยความหวังว่าฉันจะได้รับคำตอบที่ยอดเยี่ยมซึ่งสามารถนำไปใช้กับสามเณรใน DSP ได้


การทดลองที่ 1:

อินพุตโดเมนเวลา

ฉันสร้างคลื่นไซน์โดยใช้เพื่อสร้าง 64 ตัวอย่าง จากนั้นผมก็เพิ่ม 30% 3 R dดนตรี, 20% 5 ทีเอชฮาร์โมนิ, 15% 7 ทีเอชฮาร์โมนิ 10% 9 ทีเอชฮาร์โมนิและ 20% 11 ทีเอชฮาร์โมนิ สิ่งนี้นำไปสู่ตัวอย่างเหล่านี้:บาป(2nπ/64)3Rd5เสื้อชั่วโมง7เสื้อชั่วโมง9เสื้อชั่วโมง11เสื้อชั่วโมง

0, 0.628226182, 0.939545557, 0.881049194, 0.678981464, 0.602991986, 0.719974543, 
0.873221372, 0.883883476, 0.749800373, 0.636575155, 0.685547957, 0.855268479, 
0.967780108, 0.904799909, 0.737695292, 0.65, 0.737695292, 0.904799909, 0.967780108, 
0.855268479, 0.685547957, 0.636575155, 0.749800373, 0.883883476, 0.873221372, 
0.719974543, 0.602991986, 0.678981464, 0.881049194, 0.939545557, 0.628226182, 0, 
-0.628226182, -0.939545557, -0.881049194, -0.678981464, -0.602991986, -0.719974543, 
-0.873221372, -0.883883476, -0.749800373, -0.636575155, -0.685547957, -0.855268479, 
-0.967780108, -0.904799909, -0.737695292, -0.65, -0.737695292, -0.904799909, 
-0.967780108, -0.855268479, -0.685547957, -0.636575155, -0.749800373, -0.883883476, 
-0.873221372, -0.719974543, -0.602991986, -0.678981464, -0.881049194, -0.939545557,
-0.628226182

และรูปคลื่นนี้:

โดเมนเวลารูปแบบคลื่น 64 ตัวอย่างระยะเวลา 64

ฉันใช้ DFT ของตัวอย่างเหล่านี้ตามอัลกอริทึม Radix 2 และได้รับค่าเหล่านี้:

0, -32i, 0, -9.59999999999999i, 0, -6.4i, 0, -4.79999999999999i, 0, -3.20000000000001i,
0, -6.4i, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.4i, 0, 3.19999999999999i, 0, 4.8i, 0,
6.4i, 0, 9.60000000000001i, 0, 32i

การรับค่าสัมบูรณ์ของจำนวนเชิงซ้อนข้างต้นเป็นอัตราส่วนต่อค่าพื้นฐาน (ค่าที่ 2) และไม่สนใจข้อมูลเฟส (ถ้ามี) ฉันได้ขนาดของส่วนประกอบฮาร์มอนิที่ฉีดตรงตามที่ฉีด

การแทนโดเมนความถี่

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

จนถึงตอนนี้ดีมาก


การทดลองที่ 2:

อินพุตโดเมนเวลา

บาป(2nπ/41)3Rd5เสื้อชั่วโมง7เสื้อชั่วโมง9เสื้อชั่วโมง11เสื้อชั่วโมง

0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841, 
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879, 
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632, 
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079, 
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034, 
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999, 
-0.762429734, -0.603896038, -0.857877516, -0.853079823, -6.87889E-15, 0.853079823, 
0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841, 0.676188057, 
0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879, 0.802820512, 
0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632, 0.954031849, 
0.50925641, -0.50925641, -0.954031849 

และรูปคลื่นนี้:

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

ฉันใช้ DFT ของตัวอย่างเหล่านี้ตามอัลกอริทึม Radix 2 และได้รับค่าเหล่านี้:

14.03118145099, 22.8331789450432+2.81923657448236i, -17.9313890484703-4.4853739490832i, 
-2.54294462900052-0.971245447370764i, 1.74202662319821+0.944780377248239i, 
-7.2622766435314-5.09627264287862i, -1.5480700475686-1.37872970296476i, 
-0.136588568631116-0.126111953353714i, -3.99554928315394-5.93646306363598i, 
-0.840633449276516-1.60987487366169i, -0.373838501691708-0.955596009389976i, 
-1.326751987645-5.7574455633693i, -0.168983464443025-1.34797078005724i, 
-9.49818315071085E-003-1.20377723286595i, 0.571706242298176-4.14055455367115i,  
0.192891008647316-0.865793520825366i, 0.457088076063747-1.22893647561869i, 
3.15565897700047-5.67394957744733i, -0.573520124828716+0.682717512668197i, 
-0.20041207669728+0.127925509089274i, -7.95516670999013E-002-1.22174958722397E-002i, 
-1.57510358481328E-002-6.44533006507588E-002i, 2.50067192003906E-002-8.46645685508359E-
002i, 5.3665806842526E-002-9.01867018999554E-002i, 7.49143167927897E-002-
8.80550417489663E-002i, 9.11355142202819E-002-8.16075816185574E-002i, 
0.103685444073525-7.25978085593222E-002i, 0.11339684328631-6.20147712757682E-002i, 
0.120807189654211-5.04466357453455E-002i, 0.126272708495893-3.82586162066316E-002i, 
0.130029552904267-2.56872914345987E-002i, 0.132228055573542-1.28943815159261E-002i, 
0.1329519244939, 0.132228055573544+1.28943815159441E-002i, 
0.130029552904267+2.56872914345769E-002i, 0.126272708495892+3.82586162066264E-002i, 
0.12080718965421+5.04466357453468E-002i, 0.113396843286315+6.20147712757588E-002i, 
0.103685444073529+7.25978085593135E-002i, 9.11355142202805E-002+8.16075816185583E-002i, 
7.4914316792795E-002+8.80550417489592E-002i, 5.36658068425271E-002+9.01867018999563E-
002i, 2.50067192003947E-002+8.46645685508275E-002i, -1.57510358481296E-
002+6.44533006507526E-002i, -7.95516670999005E-002+1.22174958722402E-002i, 
-0.20041207669728-0.127925509089278i, -0.573520124828709-0.682717512668206i, 
3.15565897700049+5.67394957744733i, 0.45708807606375+1.22893647561869i, 
0.192891008647318+0.865793520825373i, 0.571706242298199+4.14055455367114i, 
-9.49818315070294E-003+1.20377723286595i, -0.168983464443023+1.34797078005724i, 
-1.32675198764498+5.75744556336931i, -0.373838501691692+0.955596009389972i, 
-0.840633449276515+1.6098748736617i, -3.99554928315393+5.93646306363599i, 
-0.136588568631125+0.126111953353722i, -1.54807004756858+1.37872970296476i, 
-7.26227664353139+5.09627264287866i, 1.7420266231982-0.944780377248243i, 
-2.54294462900053+0.971245447370785i, -17.9313890484703+4.48537394908326i, 
22.8331789450432-2.81923657448243i

การแทนโดเมนความถี่

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

ขนาดของจำนวนเชิงซ้อนข้างต้นไม่เปิดเผยสิ่งที่ฉันสามารถอนุมานกลับไปที่ค่าการฉีดในโดเมนเวลา


การทดลอง 3

อินพุตโดเมนเวลา:

ตอนนี้ฉันได้รูปแบบของคลื่นที่เท่ากันและมีค่าศูนย์เป็นศูนย์นั่นคือตั้งค่าตัวอย่างทั้งหมดที่เกิน 41 เป็นศูนย์ ดังนั้นต่อไปนี้คือการป้อนข้อมูลโดเมนเวลา:

0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841,  
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879, 
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632, 
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079, 
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034, 
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999, 
-0.762429734, -0.603896038, -0.857877516, -0.853079823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

และรูปแบบของคลื่น:

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

ฉันใช้ DFT ของตัวอย่างเหล่านี้ตามอัลกอริทึม Radix 2 และได้รับค่าเหล่านี้:

0, 20.0329458083285-9.47487772467906i, -10.5723252177717-8.67648307596821i, 
-8.88751906208901E-002+0.354809649783859i, 3.59322342970171-0.714736578926027i, 
-3.28379151210465-4.42768029850565i, -0.232297876050463+0.434598758428557i, 
1.68672762980862+8.28636148716246E-002i, -1.54927040705738-3.7402696285012i, 
-0.551413356435698+0.608390885175318i, 0.616809338622588+0.187107067289195i, 
-0.458965526924983-3.09409425549091i, -0.966784216252588+0.645984560777537i, 
7.03082277241579E-003+4.21411299459407E-003i, 0.196179960454289-1.99184856512683i, 
-0.919089774378072+0.328855579674163i, 0.222736292145887+0.222736292145884i, 
1.23799833509466-3.45997355924453i, -3.29198268057418+0.324231994037239i, 
-0.495840326552116-0.827259606915814i, -0.434268223171498+0.649928325340974i, 
-1.13740282784196-0.168717771696843i, -8.50255402020411E-002-0.280291642522456i, 
-0.495871287837938+0.449431537929797i, -0.705190861543966-0.292099618913078i, 
-1.8498657760867E-003-3.76548829156425E-002i, -0.56327531746565+0.301076929791613i, 
-0.445444858519027-0.330364422654705i, -2.53084763487132E-002+0.12723430263342i, 
-0.608135034699087+0.152329896227613i, -0.254967975468-0.31067937701979i, 
-0.114451748984804+0.241987891739128i, -0.623647028694518, -0.114451748984793-
0.241987891739111i, -0.254967975467992+0.310679377019776i, -0.608135034699088-
0.152329896227612i, -2.53084763487126E-002-0.127234302633416i, 
-0.445444858519022+0.330364422654704i, -0.563275317465649-0.301076929791616i, 
-1.84986577609081E-003+3.76548829156447E-002i, -0.705190861543962+0.292099618913075i, 
-0.495871287837939-0.449431537929793i, -8.50255402020378E-002+0.280291642522452i, 
-1.13740282784196+0.168717771696845i, -0.434268223171501-0.649928325340972i, 
-0.495840326552115+0.827259606915815i, -3.29198268057417-0.324231994037237i, 
1.23799833509466+3.45997355924453i, 0.222736292145887-0.222736292145884i, 
-0.919089774378077-0.328855579674149i, 0.1961799604543+1.99184856512683i, 
7.03082277241257E-003-4.21411299459534E-003i, -0.966784216252593-0.645984560777534i, 
-0.458965526924974+3.09409425549092i, 0.616809338622592-0.187107067289204i, 
-0.551413356435713-0.608390885175314i, -1.54927040705737+3.74026962850121i, 
1.68672762980861-8.28636148716247E-002i, -0.232297876050455-0.434598758428559i, 
-3.28379151210465+4.42768029850566i, 3.59322342970171+0.714736578926018i, 
-8.88751906209093E-002-0.354809649783852i, -10.5723252177717+8.67648307596825i, 
20.0329458083285+9.47487772467899i 

การแทนโดเมนความถี่

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

อีกครั้งขนาดของจำนวนเชิงซ้อนข้างต้นไม่เปิดเผยสิ่งที่ฉันสามารถอนุมานกลับไปที่ค่าการฉีดในโดเมนเวลา


การทางพิเศษแห่งประเทศไทย ตั้งแต่คำตอบที่นี่ชี้ให้ฉันไปที่หน้าต่างฉันได้ทำการทดลองอื่นและได้ผลลัพธ์ต่อไปนี้หลังจากการเริ่มต้นผิดพลาดมากมาย

การทดลอง 4

การแสดงโดเมนเวลา

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.853079823, 0.857877516, 0.603896038,
0.762429734, 0.896260999, 0.695656841, 0.676188057, 0.928419527, 0.897723205, 
0.664562475, 0.765676034, 0.968738879, 0.802820512, 0.632264626, 0.814329015, 
0.875637458, 0.639141079, 0.696479632, 0.954031849, 0.50925641, -0.50925641, 
-0.954031849, -0.696479632, -0.639141079, -0.875637458, -0.814329015, -0.632264626, 
-0.802820512, -0.968738879, -0.765676034, -0.664562475, -0.897723205, -0.928419527, 
-0.676188057, -0.695656841, -0.896260999, -0.762429734, -0.603896038, -0.857877516, 
-0.853079823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

ดูเหมือน:

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

Hamming Window Coefficients

0.08, 0.082285843, 0.089120656, 0.100436509, 0.116120943, 0.136018076, 0.159930164, 
0.187619556, 0.218811064, 0.253194691, 0.290428719, 0.330143098, 0.371943129, 
0.415413385, 0.460121838, 0.505624157, 0.551468118, 0.597198104, 0.64235963, 
0.686503859, 0.729192067, 0.77, 0.808522089, 0.844375485, 0.877203861, 0.906680953, 
0.932513806, 0.954445679, 0.972258606, 0.985775552, 0.99486218, 0.999428184, 
0.999428184, 0.99486218, 0.985775552, 0.972258606, 0.954445679, 0.932513806, 
0.906680953, 0.877203861, 0.844375485, 0.808522089, 0.77, 0.729192067, 0.686503859, 
0.64235963, 0.597198104, 0.551468118, 0.505624157, 0.460121838, 0.415413385, 
0.371943129, 0.330143098, 0.290428719, 0.253194691, 0.218811064, 0.187619556, 
0.159930164, 0.136018076, 0.116120943, 0.100436509, 0.089120656, 0.082285843, 0.080.08, 
0.082285843, 0.089120656, 0.100436509, 0.116120943, 0.136018076, 0.159930164, 
0.187619556, 0.218811064, 0.253194691, 0.290428719, 0.330143098, 0.371943129, 
0.415413385, 0.460121838, 0.505624157, 0.551468118, 0.597198104, 0.64235963, 
0.686503859, 0.729192067, 0.77, 0.808522089, 0.844375485, 0.877203861, 0.906680953, 
0.932513806, 0.954445679, 0.972258606, 0.985775552, 0.99486218, 0.999428184, 
0.999428184, 0.99486218, 0.985775552, 0.972258606, 0.954445679, 0.932513806, 
0.906680953, 0.877203861, 0.844375485, 0.808522089, 0.77, 0.729192067, 0.686503859, 
0.64235963, 0.597198104, 0.551468118, 0.505624157, 0.460121838, 0.415413385, 
0.371943129, 0.330143098, 0.290428719, 0.253194691, 0.218811064, 0.187619556, 
0.159930164, 0.136018076, 0.116120943, 0.100436509, 0.089120656, 0.082285843, 0.08

หน้าตาแบบนี้

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

ผลิตภัณฑ์ของพวกเขา (มันจะเป็นผลิตภัณฑ์ที่เรียบง่ายหรือ

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.354380777, 0.394728179, 0.305344425, 
0.420455691, 0.53524537, 0.446861871, 0.464205711, 0.676996154, 0.691246868, 
0.537313441, 0.646518073, 0.849781485, 0.727902068, 0.589595493, 0.77723281, 
0.851346054, 0.63004965, 0.692901245, 0.953486318, 0.508965209, -0.506639943, 
-0.940461272, -0.677158316, -0.610025441, -0.816544018, -0.738336608, -0.554624971, 
-0.67788196, -0.783246782, -0.589570546, -0.484593685, -0.616290445, -0.596379223, 
-0.403818226, -0.383632569, -0.453171212, -0.350810571, -0.250866497, -0.319081647, 
-0.281638415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

ดูเหมือน:

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

การแทนโดเมนความถี่

1.01978454171002, -1.04956742046721-14.885596686908i, 
0.729587297164687+12.4883097743251i, -0.393281811348907-4.24261013057826i, 
0.761581725234628+3.2398820477072i, -0.876737136684714-3.79393194973719i, 
0.480276094694696+1.88418789653125i, -0.735142602781246-1.8175563772351i, 
1.02811278581892+2.5331069394699i, -0.584707361656586-1.41705783059227i, 
0.642189640425863+1.09157435002371i, -1.08027274688044-1.77950446999262i, 
0.690373934734768+1.16057125940753i, -0.45786262480057-0.586349217392973i, 
0.837117486838485+0.985681387258948i, -0.684335876271999-0.810862267851556i, 
0.930190039748881+0.842491953501215i, -2.11497450796919-1.82531206712061i, 
1.77660184883125+1.59539043421572i, -8.20687157856373E-003-0.123202767234891i, 
-0.280149317662962-0.244195928734504i, -0.313777442633104-0.174757927010731i, 
-5.83069102281942E-002+1.54514819958589E-002i, 0.211135948552966+0.12606544182717i, 
0.227409826380236+7.86489707052085E-002i, 2.49029866186928E-003-3.26908578232317E-002i, 
-0.204885728671642-7.60371335974082E-002i, -0.174609549526536-2.58285031988847E-002i, 
4.55943100777029E-002+3.62216126377679E-002i, 0.205437067084294+3.66474457853982E-002i, 
0.130866115437055-7.39089659931302E-003i, -8.90307098969982E-002-2.75195665163235E-
002i, -0.206016142964952, -8.90307098969848E-002+2.75195665163199E-002i, 
0.130866115437044+7.39089659931835E-003i, 0.205437067084297-3.66474457854036E-002i, 
4.55943100777004E-002-3.62216126377661E-002i, -0.174609549526531+2.58285031988801E-
002i, -0.204885728671643+7.60371335974132E-002i, 2.49029866187001E-
003+3.26908578232264E-002i, 0.227409826380234-7.86489707052067E-002i, 0.21113594855297-
0.126065441827174i, -5.83069102281978E-002-1.54514819958551E-002i, 
-0.313777442633101+0.174757927010727i, -0.280149317662962+0.244195928734507i, 
-8.20687157856043E-003+0.123202767234886i, 1.77660184883125-1.59539043421572i, 
-2.11497450796919+1.82531206712061i, 0.930190039748879-0.842491953501215i, 
-0.684335876271989+0.810862267851559i, 0.837117486838478-0.985681387258952i, 
-0.457862624800567+0.586349217392971i, 0.690373934734765-1.16057125940753i, 
-1.08027274688043+1.77950446999263i, 0.642189640425861-1.09157435002371i, 
-0.584707361656583+1.41705783059227i, 1.02811278581891-2.5331069394699i, 
-0.735142602781236+1.81755637723511i, 0.480276094694689-1.88418789653125i, 
-0.876737136684699+3.79393194973719i, 0.76158172523462-3.2398820477072i, 
-0.393281811348889+4.24261013057827i, 0.729587297164646-12.4883097743252i, 
-1.04956742046715+14.885596686908i

มีลักษณะเช่นนี้:

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

ผลลัพธ์ที่ถูกต้องเหล่านี้หรือไม่ เพราะฉันยังดูเหมือนจะไม่ได้รับทุกที่!


ฉันทำการทดลองอีกสองครั้งและดูเหมือนจะยั่วเย้าใกล้เคียงกับผลลัพธ์ที่ต้องการ แต่วิธีการแก้ปัญหามีความรู้สึกเหมือนแฮ็คสำหรับฉัน

การทดลอง 5

3Rd5เสื้อชั่วโมง7เสื้อชั่วโมง9เสื้อชั่วโมง11เสื้อชั่วโมง

0, 0.853079823, 0.857877516, 0.603896038, 0.762429734, 0.896260999, 0.695656841, 
0.676188057, 0.928419527, 0.897723205, 0.664562475, 0.765676034, 0.968738879, 
0.802820512, 0.632264626, 0.814329015, 0.875637458, 0.639141079, 0.696479632, 
0.954031849, 0.50925641, -0.50925641, -0.954031849, -0.696479632, -0.639141079, 
-0.875637458, -0.814329015, -0.632264626, -0.802820512, -0.968738879, -0.765676034, 
-0.664562475, -0.897723205, -0.928419527, -0.676188057, -0.695656841, -0.896260999, 
-0.762429734, -0.603896038, -0.857877516, -0.853079823.

ฉันทำการแก้ไขเชิงเส้นและได้ 64 ตัวอย่างมาจากที่เดียวกัน พวกเขาดูเหมือนต่อไปนี้:

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

การแทนโดเมนความถี่เมื่อเทียบกับผลลัพธ์ในอุดมคติ (การทดสอบครั้งแรก) จะเป็นดังนี้:

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

ฉันถอดชิ้นส่วนช่วงครึ่งหลังของพื้นที่ตัวอย่างออกเนื่องจากส่วนประกอบถูกพับหลังจากข้อ จำกัด Nyquist มีการลดทอนเล็กน้อยที่ความถี่ที่น่าสนใจ แต่มีการเพิ่มระดับเสียงรบกวนในสเปกตรัม คำอธิบาย?


การทดลอง 6

เช่นเดียวกับการทดลอง 5แต่มีตัวอย่างประมาณ 32 ตัวอย่าง

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

การเปรียบเทียบโดเมนความถี่:

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

อัตราส่วนถูกต้อง แต่ลดขนาดลงครึ่งหนึ่ง! ทำไม?


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

เนื่องจากฉันมีการควบคุมความถี่การสุ่มตัวอย่างน้อยมากตัวเลือกใดบ้างที่เปิดสำหรับฉันเพื่อรับค่าที่ฉันฉีดกลับมาในโดเมนเวลา


แทนที่จะโพสต์ตัวเลขจำนวนมากคุณสามารถโพสต์กราฟของเอาท์พุท DFT ได้หรือไม่? มันค่อนข้างยากที่จะเข้าใจแนวคิดคร่าว ๆ ของผลลัพธ์เป็นเพียงตัวเลขจำนวนมาก
ชื่อปลอม

คุณต้องการกราฟของขนาด (ค่าสัมบูรณ์) หรือไม่

ใช่ไหมตอนนี้

ฉันคิดว่าการเรียงหน้าต่างไม่ได้ผลดีในช่วงเวลาเดียวเช่นเดียวกับ DFT ในช่วงเวลา 1 โดยไม่ต้องมีหน้าต่าง ไม่มีสัญญาณเดิมของคุณ

1
ฉันไม่แน่ใจว่าสิ่งที่คุณได้รับกับความโปรดปราน ฉันเพิ่งเห็นกองใหญ่ที่มีความคิดเห็นกระจัดกระจายและคำถามที่คลุมเครือ การทำความเข้าใจรายละเอียดปลีกย่อยของ DFT และหน้าต่างจะต้องมีการศึกษาเชิงทฤษฎีอย่างน้อยใน DSP ฉันจะแนะนำหนังสือเบื้องต้นลียง ประการที่สองคำถามเฉพาะของคุณเกี่ยวกับการติดตั้ง Windowing คืออะไร? มันเป็นเทคนิคที่ง่ายและคุณจะเข้าใจได้ดีที่สุดว่าจะนำไปใช้ในระบบที่มีข้อ จำกัด ของคุณได้อย่างไร
Jason R

คำตอบ:


12

ยินดีต้อนรับสู่ windowing ไม่มีส่วนเกี่ยวข้องกับ William G.

การรักษาที่ง่ายที่สุดซึ่งทำงานโดยการใช้กำลังดุร้ายกำลังฝังข้อผิดพลาดทางเสียงโดยใช้ค่าเฉลี่ยคือการสุ่มตัวอย่างจำนวนมากของรอบเพื่อให้เงื่อนไขขอบเขตไม่ได้มีอิทธิพล

ฉันไม่ได้ดูผลลัพธ์ที่เป็นตัวเลข แต่:

ดูกราฟที่สองและสามของคุณ
รูปคลื่นที่คุณแสดงเป็นรูปคลื่นที่กำลังวิเคราะห์
ตัวอย่างแรกมี 2 รอบครึ่งบวกและอีกหนึ่งรอบลบ
ฉันคาดหวังว่ามันจะแข็งแกร่งมากในฮาร์มอนิกที่ 3 และสมเหตุสมผลในฮาร์มอนิกอื่น ๆ นั่นคือการคาดเดาที่ใช้งานง่าย
ไม่ว่าผลลัพธ์จะเป็นอะไรการแปลงรูป (ทำอย่างถูกต้อง) จะอธิบายสิ่งที่เห็นและสิ่งที่คุณเห็น

ฉันคาดหวังว่าตัวอย่างที่สองจะยากอย่างมากที่จะเป็นตัวแทนที่ดีและจะต้องมีส่วนประกอบความถี่สูงจำนวนมาก มันคือ 1/3 + ve, 1/3 -ve และ 1/3 zero เป็นเรื่องยากที่จะพูดว่าคุณจะได้รับผลลัพธ์ทางด้านขวาเป็นศูนย์ได้อย่างง่ายดายเพียงใดโดยไม่ต้องใช้คำที่มีความถี่สูงเกือบเท่ากันในระยะตรงข้ามกัน

ดังนั้น

DFT หรือ FFT บอกสิ่งที่เห็น คุณจำเป็นต้องป้อนสัญญาณอินทิกรัลรูปคลื่นของสัญญาณที่สนใจหรือพิจารณาบัญชีพิเศษของจุดสิ้นสุด มีทั้งรูปแบบที่ทุ่มเทให้กับงานหลัง ข้อตกลงเช่น Windowing, Cosine ยก, หน้าต่าง Hamming (และอีกมากมาย) จะเริ่มต้นการเดินทางของคุณ

Wikipedia - หน้าต่าง Cooley Hann Lanczos Hamming Blackman Kaiser Nutttall และเพื่อนมากมาย :-)

อาจมีประโยชน์

ตราสารแห่งชาติและอีกครั้งที่นี่

การวิเคราะห์สเปกตรัม DFT


หนึ่งในสามของรูปคลื่นที่สามได้รับการตั้งค่าเป็นศูนย์บังคับให้เป็น excel ในที่นี่และในเฟิร์มแวร์ในระหว่างการใช้งาน

5
การบังคับให้บางส่วนของสัญญาณเป็นศูนย์จะเป็นเพียงหน้าต่างสี่เหลี่ยมข้อมูลที่มีสี่เหลี่ยมที่สั้นกว่าซึ่งจะทำให้เกิดผลลัพธ์ที่แน่นอนด้วยฟังก์ชัน Sinc ที่กว้างขึ้น
hotpaw2

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

@RussellMcMahon Yup- ฉันเห็นด้วย

การกำหนดจำนวนเต็มเป็นจำนวนเต็มจัดตำแหน่งโมฆะของ sinc กับระยะห่างฮาร์มอนิกซึ่งป้องกันการรั่วไหลระหว่างฮาร์มอนิกเมื่อสเปกตรัมของหน้าต่างถูกโน้มน้าว นี่คือDFT 1024 จุด (สอดแทรกด้วยการเติมเต็มศูนย์) สำหรับการทดลอง 2 & 3 (เช่นหน้าต่างสี่เหลี่ยม 64- จุดเทียบกับหน้าต่างสี่เหลี่ยม 41 จุด) ค่าอุดมคติถูกพล็อตเป็นจุดสีน้ำเงิน การทดลองที่ 2 แสดงการรั่วไหลของสเปกตรัม (โดยเฉพาะอย่างยิ่งที่ฮาร์มอนิกที่ควรเป็นศูนย์) แต่การทดลองที่ 3 นั้นถูกต้องที่ฮาร์มอนิก
Eryk Sun

7

ผลลัพธ์ของ FFT จะเปิดเผยทุกสิ่งเกี่ยวกับความถี่เดิมที่ฉีดเข้าไป แต่เนื่องจากความถี่ที่ถูกฉีดนั้นไม่ได้มีความยาวเป็นรูตรงตามความยาวของรูรับแสง FFT ดังนั้นความถี่จึงถูกแปลงเป็นรูปคลื่น Sinc เนื่องจากหน้าต่างที่ไม่เกี่ยวข้องเป็นระยะนี้จึงถูกสุ่มใหม่ ในการรับความถี่ดั้งเดิมกลับมาคุณอาจต้อง deconvolve, interpolate และ rescale ตามความยาวของ FFT


คุณช่วยอธิบายสามขั้นตอนได้ไหม ฉันสามารถส่งไฟล์ excel พร้อมตัวอย่างต้นฉบับให้คุณเล่นได้หากคุณต้องการ

6

นี่ไม่ใช่คำตอบที่สมบูรณ์ไม่ว่าด้วยวิธีใดและฉันไม่คิดว่ามันจะได้รับการยอมรับ แต่ฉันก็คิดว่ามันมีคุณค่าทางการศึกษาที่สำคัญในการตอบกลับนี้

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

คุณพูดถูก FFT ใช้ประโยชน์จากสมมาตรของตัวอย่างความถี่ตามวงกลมหน่วยในระนาบ z:

วงกลมหน่วยทั่วไป

หากจำนวนตัวอย่างของคุณเป็นกำลัง 2 ดังที่แสดงไว้ด้านบนคุณสามารถเห็นความสมมาตรของทั้งแกนจริงและแกนจินตภาพ โดยพื้นฐานแล้วสิ่งที่ FFT ใช้คือสมมาตรนี้เพื่อยุบตัวอย่างลงไปที่ 1 Quadrant (หรือน้อยกว่าหรือไม่แน่ใจว่ารายละเอียดของสมมาตรนี้) ของวงกลมหน่วย ซึ่งหมายความว่า FFT จะต้องทำการคำนวณเพียงเล็กน้อยเท่านั้นเทียบกับช่วงความถี่ทั้งหมด

คุณสามารถทำอะไรกับ zero-padding เพิ่มความละเอียดของ FFT ด้วยการเพิ่มค่าศูนย์เพื่อสร้างพลังงานที่สูงขึ้นจาก 2 ตัวอย่าง ความสมมาตรยังคงอยู่ที่นั่นมีเพียงตัวอย่างเพิ่มเติมที่บรรจุในวงกลมหน่วยในขณะนี้

ดังนั้นถ้าคุณไม่มีพลัง 2 FFT ที่แข็งแกร่งน้อยกว่าจะไม่เป็นศูนย์สำหรับคุณและคุณสามารถใช้นามแฝงในผลลัพธ์ของคุณได้

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