ડિસ્ક્રીટ દ્વિ-પરિમાણીય ફોરિયર ટ્રાન્સફોર્મ c. ઇમેજ પ્રોસેસિંગ ટૂલબોક્સનું વર્ણન

હું માનું છું કે બધું જ છે સામાન્ય રૂપરેખાફોરિયર ટ્રાન્સફોર્મ જેવા અદ્ભુત ગાણિતિક સાધનના અસ્તિત્વ વિશે જાણો. જો કે, કેટલાક કારણોસર તે યુનિવર્સિટીઓમાં એટલી નબળી રીતે શીખવવામાં આવે છે કે પ્રમાણમાં ઓછા લોકો સમજે છે કે આ પરિવર્તન કેવી રીતે કાર્ય કરે છે અને તેનો યોગ્ય રીતે ઉપયોગ કેવી રીતે કરવો જોઈએ. દરમિયાન, આ પરિવર્તનનું ગણિત આશ્ચર્યજનક રીતે સુંદર, સરળ અને ભવ્ય છે. હું દરેકને ફોરિયર ટ્રાન્સફોર્મ અને કેવી રીતે સંબંધિત વિષય વિશે થોડું વધુ જાણવા માટે આમંત્રિત કરું છું એનાલોગ સંકેતોકોમ્પ્યુટેશનલ પ્રોસેસિંગ માટે અસરકારક રીતે ડિજિટલમાં રૂપાંતરિત કરી શકાય છે.

કોઈ ઉપયોગ નથી જટિલ સૂત્રોઅને Matlab હું નીચેના પ્રશ્નોના જવાબ આપવાનો પ્રયત્ન કરીશ:

  • FT, DTF, DTFT - શું તફાવત છે અને કેવી રીતે દેખીતી રીતે સંપૂર્ણપણે અલગ ફોર્મ્યુલા આવા કલ્પનાત્મક રીતે સમાન પરિણામો આપે છે?
  • પરિણામોનું યોગ્ય અર્થઘટન કેવી રીતે કરવું ઝડપી રૂપાંતરફોરિયર (FFT)
  • જો તમને 179 નમૂનાઓનો સંકેત આપવામાં આવે અને FFT ને લંબાઈના ઇનપુટ ક્રમની જરૂર હોય તો શું કરવું સમાન રીતે deuces
  • શા માટે, જ્યારે અપેક્ષિત સિંગલ “સ્ટીક” ને બદલે, ફોરિયરનો ઉપયોગ કરીને સાઇનસૉઇડનું સ્પેક્ટ્રમ મેળવવાનો પ્રયાસ કરવામાં આવે છે, ત્યારે ગ્રાફ પર એક વિચિત્ર સ્ક્વિગલ દેખાય છે અને તેના વિશે શું કરી શકાય છે
  • શા માટે એનાલોગ ફિલ્ટર્સ ADC પહેલા અને DAC પછી મૂકવામાં આવે છે?
  • શું સેમ્પલિંગ ફ્રિકવન્સી કરતાં અડધા કરતાં વધુ આવર્તન સાથે ADC સિગ્નલને ડિજિટાઇઝ કરવું શક્ય છે (શાળાનો જવાબ ખોટો છે, સાચો જવાબ શક્ય છે)
  • ડિજિટલ સિક્વન્સનો ઉપયોગ કરીને મૂળ સિગ્નલને કેવી રીતે પુનઃસ્થાપિત કરવું

હું એ ધારણાથી આગળ વધીશ કે વાચક સમજે છે કે અવિભાજ્ય શું છે, એક જટિલ સંખ્યા (તેમજ તેનું મોડ્યુલસ અને દલીલ), ફંક્શન્સનું કન્વ્યુલેશન, વત્તા ડિરાક ડેલ્ટા ફંક્શન શું છે તેનો ઓછામાં ઓછો "હેન્ડ-ઓન" વિચાર. છે. જો તમને ખબર ન હોય, તો કોઈ સમસ્યા નથી, ઉપરની લિંક્સ વાંચો. માં "કાર્યોનું ઉત્પાદન" હેઠળ આ લખાણહું દરેક જગ્યાએ “બિંદુ પ્રમાણે ગુણાકાર” સમજીશ

આપણે કદાચ એ હકીકતથી શરૂઆત કરવી જોઈએ કે સામાન્ય રૂપાંતરફ્યુરિયર એ એક પ્રકારની વસ્તુ છે કે જે તમે નામ પરથી અનુમાન લગાવી શકો છો, કેટલાક ફંક્શન્સને અન્યમાં રૂપાંતરિત કરે છે, એટલે કે, વાસ્તવિક ચલ x(t) ના દરેક ફંક્શનને તેના સ્પેક્ટ્રમ અથવા ફૌરિયર ઈમેજ y(w) સાથે સાંકળે છે:

જો આપણે સામ્યતા આપીએ, તો અર્થમાં સમાન પરિવર્તનનું ઉદાહરણ હોઈ શકે છે, ઉદાહરણ તરીકે, ભિન્નતા, ફંક્શનને તેના વ્યુત્પન્નમાં ફેરવવું. એટલે કે, ફોરિયર ટ્રાન્સફોર્મ એ આવશ્યકપણે ડેરિવેટિવ લેવા જેવું જ ઓપરેશન છે, અને તે ઘણીવાર સૂચવવામાં આવે છે. એ જ રીતે, ફંક્શન પર ત્રિકોણાકાર "કેપ" દોરો. માત્ર ભિન્નતાથી વિપરીત, જેને વાસ્તવિક સંખ્યાઓ માટે પણ વ્યાખ્યાયિત કરી શકાય છે, ફોરિયર ટ્રાન્સફોર્મ હંમેશા વધુ સામાન્ય જટિલ સંખ્યાઓ સાથે "કાર્ય કરે છે". આને કારણે, આ પરિવર્તનના પરિણામો પ્રદર્શિત કરવામાં સતત સમસ્યાઓ ઊભી થાય છે, કારણ કે જટિલ સંખ્યાઓ એક દ્વારા નહીં, પરંતુ સંચાલન પરના બે કોઓર્ડિનેટ્સ દ્વારા નક્કી કરવામાં આવે છે. વાસ્તવિક સંખ્યાઓગ્રાફિક્સ સૌથી અનુકૂળ રીત, એક નિયમ તરીકે, જટિલ સંખ્યાઓને મોડ્યુલસ અને દલીલના સ્વરૂપમાં રજૂ કરવાની અને તેમને બે અલગ ગ્રાફ તરીકે અલગથી દોરવાનો છે:

જટિલ મૂલ્યની દલીલના ગ્રાફને ઘણીવાર બોલાવવામાં આવે છે આ કિસ્સામાં"તબક્કો સ્પેક્ટ્રમ", અને મોડ્યુલ ગ્રાફ - "કંપનવિસ્તાર સ્પેક્ટ્રમ". કંપનવિસ્તાર સ્પેક્ટ્રમ સામાન્ય રીતે વધુ રસ ધરાવે છે, અને તેથી સ્પેક્ટ્રમનો "તબક્કો" ભાગ ઘણીવાર છોડવામાં આવે છે. આ લેખમાં આપણે "કંપનવિસ્તાર" વસ્તુઓ પર પણ ધ્યાન કેન્દ્રિત કરીશું, પરંતુ આપણે ગ્રાફના ગુમ થયેલ તબક્કાના ભાગના અસ્તિત્વ વિશે ભૂલવું જોઈએ નહીં. વધુમાં, સામાન્ય જટિલ મૂલ્ય મોડ્યુલને બદલે, તે ઘણીવાર દોરવામાં આવે છે દશાંશ લઘુગણક 10 વડે ગુણાકાર. પરિણામ ડેસિબલ્સ (dB) માં પ્રદર્શિત મૂલ્યો સાથેનો લઘુગણક ગ્રાફ છે.

મહેરબાની કરીને નોંધ કરો કે ખૂબ જ નહીં નકારાત્મક સંખ્યાઓલઘુગણક ગ્રાફ (-20 ડીબી અથવા ઓછું) વ્યવહારીક રીતે અનુરૂપ છે શૂન્ય સંખ્યાઓ"સામાન્ય" ચાર્ટ પર. તેથી, આવા ગ્રાફ પરના વિવિધ સ્પેક્ટ્રાની લાંબી અને પહોળી "પૂંછડીઓ", જ્યારે "સામાન્ય" કોઓર્ડિનેટ્સમાં પ્રદર્શિત થાય છે, ત્યારે નિયમ પ્રમાણે, વ્યવહારીક રીતે અદૃશ્ય થઈ જાય છે. પ્રથમ નજરે રજૂઆતમાં આવી વિચિત્રતાની સગવડ એ હકીકત પરથી ઊભી થાય છે કે ફ્યુરિયર છબીઓ વિવિધ કાર્યોઘણીવાર તે એકબીજામાં ગુણાકાર કરવા માટે જરૂરી છે. જટિલ-મૂલ્યવાળી ફ્યુરિયર છબીઓના આવા બિંદુવાર ગુણાકાર સાથે, તેમના તબક્કાના સ્પેક્ટ્રા ઉમેરવામાં આવે છે, અને તેમના કંપનવિસ્તાર સ્પેક્ટ્રાનો ગુણાકાર થાય છે. પ્રથમ કરવું સરળ છે, જ્યારે બીજું પ્રમાણમાં મુશ્કેલ છે. જો કે, કંપનવિસ્તારનો ગુણાકાર કરતી વખતે કંપનવિસ્તારના લઘુગણકનો ઉમેરો થાય છે, તેથી લઘુગણક આલેખકંપનવિસ્તાર, જેમ કે તબક્કાના ગ્રાફ, ફક્ત બિંદુ દ્વારા બિંદુ ઉમેરી શકાય છે. વધુમાં, માં વ્યવહારુ સમસ્યાઓસિગ્નલના "કંપનવિસ્તાર" સાથે નહીં, પરંતુ તેની "શક્તિ" (કંપનવિસ્તારનો ચોરસ) સાથે કામ કરવું ઘણીવાર વધુ અનુકૂળ હોય છે. ચાલુ લઘુગણક સ્કેલબંને આલેખ (કંપનવિસ્તાર અને શક્તિ) સમાન દેખાય છે અને માત્ર ગુણાંકમાં જ ભિન્ન છે - પાવર ગ્રાફ પરના તમામ મૂલ્યો કંપનવિસ્તાર સ્કેલ કરતા બમણા મોટા હોય છે. તદનુસાર, આવર્તન (ડેસિબલ્સમાં) દ્વારા પાવર વિતરણનો ગ્રાફ બનાવવા માટે, તમે કંઈપણ ચોરસ કરી શકતા નથી, પરંતુ દશાંશ લઘુગણકની ગણતરી કરો અને તેને 20 વડે ગુણાકાર કરો.

તમે કંટાળી ગયા છો? થોડી વાર રાહ જુઓ, અમે ટૂંક સમયમાં આલેખનું અર્થઘટન કેવી રીતે કરવું તે સમજાવતા લેખના કંટાળાજનક ભાગ સાથે પૂર્ણ કરીશું :). પરંતુ તે પહેલાં, તમારે એક અત્યંત સમજવું જોઈએ મહત્વપૂર્ણ વસ્તુ: જો કે ઉપરોક્ત તમામ સ્પેક્ટ્રમ પ્લોટ અમુક મર્યાદિત શ્રેણીના મૂલ્યો માટે દોરવામાં આવ્યા હતા (ખાસ કરીને હકારાત્મક સંખ્યાઓ), આ તમામ પ્લોટ્સ વાસ્તવમાં પ્લસ અને માઈનસ અનંત સુધી ચાલુ રહે છે. આલેખ આલેખના કેટલાક "સૌથી અર્થપૂર્ણ" ભાગનું નિરૂપણ કરે છે, જે સામાન્ય રીતે પ્રતિબિંબિત થાય છે નકારાત્મક મૂલ્યોપરિમાણ અને મોટા પાયે ધ્યાનમાં લેવામાં આવે ત્યારે ચોક્કસ પગલા સાથે સમયાંતરે પુનરાવર્તિત થાય છે.

ગ્રાફ પર શું દોરવામાં આવ્યું છે તે નક્કી કર્યા પછી, ચાલો ફ્યુરિયર ટ્રાન્સફોર્મ અને તેના ગુણધર્મો પર પાછા આવીએ. ત્યાં અનેક છે અલગ અલગ રીતેઆ રૂપાંતર કેવી રીતે નક્કી કરવું, નાની વિગતોમાં ભિન્ન (વિવિધ સામાન્યીકરણ). ઉદાહરણ તરીકે, અમારી યુનિવર્સિટીઓમાં, કેટલાક કારણોસર, તેઓ વારંવાર ફ્યુરિયર ટ્રાન્સફોર્મના સામાન્યકરણનો ઉપયોગ કરે છે, જે કોણીય આવર્તન (રેડિયન પ્રતિ સેકન્ડ) ના સંદર્ભમાં સ્પેક્ટ્રમને વ્યાખ્યાયિત કરે છે. હું વધુ અનુકૂળ પશ્ચિમી ફોર્મ્યુલેશનનો ઉપયોગ કરીશ જે સામાન્ય આવર્તન (હર્ટ્ઝ) ના સંદર્ભમાં સ્પેક્ટ્રમને વ્યાખ્યાયિત કરે છે. આ કિસ્સામાં ડાયરેક્ટ અને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ્સ ડાબી બાજુના સૂત્રો દ્વારા નક્કી કરવામાં આવે છે, અને આ ટ્રાન્સફોર્મેશનના કેટલાક ગુણધર્મો કે જેની આપણને જરૂર પડશે તે જમણી બાજુના સાત બિંદુઓની સૂચિ દ્વારા નક્કી કરવામાં આવે છે:

આ ગુણધર્મોમાં પ્રથમ રેખીયતા છે. જો આપણે ફંક્શનનું અમુક રેખીય સંયોજન લઈએ, તો આ સંયોજનનું ફોરિયર રૂપાંતરણ આ ફંકશનની ફોરિયર ઈમેજનો સમાન રેખીય સંયોજન હશે. આ મિલકત તમને ઘટાડવા માટે પરવાનગી આપે છે જટિલ કાર્યોઅને તેમના ફોરિયર સરળ લોકોમાં પરિવર્તિત થાય છે. ઉદાહરણ તરીકે, ફ્રિક્વન્સી f અને કંપનવિસ્તાર a સાથેના સિનુસાઈડલ ફંક્શનનું ફોરિયર ટ્રાન્સફોર્મ એ બે ડેલ્ટા ફંક્શન્સનું સંયોજન છે જે f અને -f બિંદુઓ પર સ્થિત છે અને a/2 ગુણાંક સાથે છે:

જો આપણે અલગ-અલગ ફ્રીક્વન્સીઝવાળા સાઇનસૉઇડ્સના સમૂહના સરવાળાને સમાવતું ફંક્શન લઈએ, તો રેખીયતાના ગુણધર્મ અનુસાર, આ ફંક્શનના ફ્યુરિયર ટ્રાન્સફોર્મમાં ડેલ્ટા ફંક્શનના અનુરૂપ સમૂહનો સમાવેશ થશે. આ અમને સિદ્ધાંત અનુસાર સ્પેક્ટ્રમનું નિષ્કપટ પરંતુ દ્રશ્ય અર્થઘટન આપવા દે છે “જો ફંક્શન ફ્રીક્વન્સીના સ્પેક્ટ્રમમાં f કંપનવિસ્તાર a ને અનુલક્ષે છે, તો મૂળ કાર્યને સિનુસોઇડ્સના સરવાળા તરીકે રજૂ કરી શકાય છે, જેમાંથી એક હશે. ફ્રિક્વન્સી f અને કંપનવિસ્તાર 2a સાથેનો સાઇનસૉઇડ." કડક શબ્દોમાં કહીએ તો, આ અર્થઘટન ખોટું છે, કારણ કે ડેલ્ટા ફંક્શન અને ગ્રાફ પરનો બિંદુ સંપૂર્ણપણે અલગ વસ્તુઓ છે, પરંતુ જેમ આપણે પછી જોઈશું, સ્વતંત્ર ફ્યુરિયર રૂપાંતરણ માટે તે સત્યથી દૂર રહેશે નહીં.

ફોરિયર ટ્રાન્સફોર્મની બીજી મિલકત એ છે કે સિગ્નલના સમયની પાળીમાંથી કંપનવિસ્તાર સ્પેક્ટ્રમની સ્વતંત્રતા. જો આપણે x-અક્ષ સાથે ફંક્શનને ડાબે કે જમણે ખસેડીએ, તો માત્ર તેનું તબક્કો સ્પેક્ટ્રમ.

ત્રીજી ગુણધર્મ એ છે કે સમય અક્ષ (x) ની સાથે મૂળ ફંક્શનને સ્ટ્રેચિંગ (સંકુચિત કરવું) ફ્રિક્વન્સી સ્કેલ (w) સાથે તેની ફોરિયર ઈમેજને પ્રમાણસર સંકુચિત કરે છે (લંબાય છે). ખાસ કરીને, મર્યાદિત અવધિના સિગ્નલનું વર્ણપટ હંમેશા અનંત પહોળું હોય છે અને તેનાથી વિપરીત, મર્યાદિત પહોળાઈના સ્પેક્ટ્રમ હંમેશા અમર્યાદિત સમયગાળાના સંકેતને અનુરૂપ હોય છે.

ચોથા અને પાંચમા ગુણધર્મો કદાચ બધામાં સૌથી વધુ ઉપયોગી છે. તેઓ તેમની ફ્યુરિયર ઈમેજીસના પોઈન્ટવાઈઝ ગુણાકારમાં ફંક્શનના કન્વોલ્યુશનને ઘટાડવાનું શક્ય બનાવે છે અને તેનાથી વિપરિત - ફંક્શનના પોઈન્ટવાઈઝ ગુણાકારને તેમની ફોરિયર ઈમેજીસના કન્વોલ્યુશનમાં ઘટાડવાનું શક્ય બનાવે છે. થોડું આગળ હું બતાવીશ કે આ કેટલું અનુકૂળ છે.

છઠ્ઠી મિલકત ફોરિયર છબીઓની સમપ્રમાણતા વિશે બોલે છે. ખાસ કરીને, આ ગુણધર્મમાંથી તે અનુસરે છે કે વાસ્તવિક-મૂલ્યવાળું કાર્ય (એટલે ​​​​કે, કોઈપણ "વાસ્તવિક" સિગ્નલ) ના ફોરિયર ટ્રાન્સફોર્મમાં, કંપનવિસ્તાર સ્પેક્ટ્રમ હંમેશા હોય છે. સમ કાર્ય, અને તબક્કો સ્પેક્ટ્રમ (જો શ્રેણીમાં લાવવામાં આવે તો -pi...pi) વિચિત્ર છે. તે આ કારણોસર છે કે સ્પેક્ટ્રા લગભગ ક્યારેય ગ્રાફ પર દોરવામાં આવતા નથી. નકારાત્મક ભાગસ્પેક્ટ્રમ - વાસ્તવિક-મૂલ્યવાન સંકેતો માટે તે કોઈ પ્રદાન કરતું નથી નવી માહિતી(પરંતુ, હું પુનરાવર્તન કરું છું, તે શૂન્ય પણ નથી).

છેલ્લે, છેલ્લી, સાતમી મિલકત, કહે છે કે ફોરિયર ટ્રાન્સફોર્મ સિગ્નલની "ઊર્જા" સાચવે છે. તે ફક્ત મર્યાદિત અવધિના સંકેતો માટે જ અર્થપૂર્ણ છે, જેની ઊર્જા મર્યાદિત છે, અને સૂચવે છે કે અનંત પર આવા સંકેતોનું સ્પેક્ટ્રમ ઝડપથી શૂન્યની નજીક આવે છે. તે ચોક્કસપણે આ ગુણધર્મને કારણે છે કે સ્પેક્ટ્રમ ગ્રાફ સામાન્ય રીતે સિગ્નલના ફક્ત "મુખ્ય" ભાગને દર્શાવે છે, જે ઊર્જાનો સિંહનો હિસ્સો ધરાવે છે - બાકીનો ગ્રાફ ફક્ત શૂન્ય તરફ વળે છે (પરંતુ, ફરીથી, શૂન્ય નથી).

આ 7 ગુણધર્મોથી સજ્જ, ચાલો ભાષાંતર કરવા માટેના સિગ્નલને “ડિજિટાઇઝિંગ” કરવાના ગણિતને જોઈએ. સતત સંકેતસંખ્યાઓના ક્રમમાં. આ કરવા માટે, આપણે "ડીરાક કોમ્બ" તરીકે ઓળખાતા ફંક્શન લેવાની જરૂર છે:

ડીરાક કોમ્બ એ એકતા ગુણાંક સાથે ડેલ્ટા ફંક્શનનો એક સામયિક ક્રમ છે, જે શૂન્યથી શરૂ થાય છે અને સ્ટેપ T સાથે આગળ વધે છે. સિગ્નલને ડિજિટાઇઝ કરવા માટે, T શક્ય તેટલી નાની સંખ્યા તરીકે પસંદ કરવામાં આવે છે, T<<1. Фурье-образ этой функции - тоже гребенка Дирака, только с гораздо большим шагом 1/T и несколько меньшим коэффициентом (1/T). С математической точки зрения, дискретизация сигнала по времени - это просто поточечное умножение исходного сигнала на гребенку Дирака. Значение 1/T при этом называют частотой дискретизации:

સતત કાર્યને બદલે, આવા ગુણાકાર પછી, ચોક્કસ ઊંચાઈના ડેલ્ટા સ્પંદનોનો ક્રમ પ્રાપ્ત થાય છે. તદુપરાંત, ફોરિયર ટ્રાન્સફોર્મની પ્રોપર્ટી 5 અનુસાર, પરિણામી ડિસક્રીટ સિગ્નલનું વર્ણપટ એ સંબંધિત ડિરાક કોમ્બ સાથે મૂળ સ્પેક્ટ્રમનું કન્વ્યુલેશન છે. તે સમજવું સરળ છે કે, કન્વોલ્યુશનના ગુણધર્મોના આધારે, મૂળ સિગ્નલના વર્ણપટને 1/T ના પગલા સાથે આવર્તન ધરી સાથે અનંત સંખ્યામાં "કૉપિ" કરવામાં આવે છે, અને પછી સારાંશ કરવામાં આવે છે.

નોંધ કરો કે જો મૂળ સ્પેક્ટ્રમની મર્યાદિત પહોળાઈ હોય અને અમે પૂરતા પ્રમાણમાં ઉચ્ચ સેમ્પલિંગ આવર્તનનો ઉપયોગ કર્યો હોય, તો મૂળ સ્પેક્ટ્રમની નકલો ઓવરલેપ થશે નહીં, અને તેથી એકબીજા સાથે સરવાળો થશે નહીં. તે સમજવું સરળ છે કે આવા "ભંગી" સ્પેક્ટ્રમમાંથી મૂળને પુનઃસ્થાપિત કરવું સરળ બનશે - તે ફક્ત શૂન્યના ક્ષેત્રમાં સ્પેક્ટ્રમ ઘટક લેવા માટે પૂરતું હશે, અનંતતા તરફ જતી વધારાની નકલોને "કાપીને". આ કરવાની સૌથી સરળ રીત એ છે કે શ્રેણી -1/2T...1/2T અને આ શ્રેણીની બહાર શૂન્યમાં T ની બરાબર લંબચોરસ ફંક્શન વડે સ્પેક્ટ્રમનો ગુણાકાર કરવો. આવા ફ્યુરિયર ટ્રાન્સફોર્મ ફંક્શન sinc(Tx) ને અનુલક્ષે છે અને ગુણધર્મ 4 મુજબ, આવા ગુણાકાર એ ફંક્શન sinc(Tx) સાથે ડેલ્ટા ફંક્શનના મૂળ ક્રમના કન્વ્યુલેશનની સમકક્ષ છે.



એટલે કે, ફોરિયર ટ્રાન્સફોર્મનો ઉપયોગ કરીને, અમારી પાસે સમય-નમૂનાથી મૂળ સિગ્નલને સરળતાથી પુનઃનિર્માણ કરવાની એક રીત છે, જો કે અમે ઓછામાં ઓછા બે વાર સેમ્પલિંગ ફ્રીક્વન્સીનો ઉપયોગ કરીએ છીએ (સ્પેક્ટ્રમમાં નકારાત્મક ફ્રીક્વન્સીઝની હાજરીને કારણે) મૂળ સિગ્નલમાં હાજર મહત્તમ આવર્તન કરતાં વધુ. આ પરિણામ વ્યાપકપણે જાણીતું છે અને તેને "કોટેલનિકોવ/શેનોન-નાયક્વિસ્ટ પ્રમેય" કહેવામાં આવે છે. જો કે, હવે નોંધવું સરળ છે (સાબિતીને સમજવું), આ પરિણામ, વ્યાપક ગેરસમજની વિરુદ્ધ, નક્કી કરે છે પર્યાપ્ત, પરંતુ નહીં જરૂરીમૂળ સિગ્નલ પુનઃસ્થાપિત કરવા માટેની સ્થિતિ. અમારે માત્ર એ સુનિશ્ચિત કરવાની જરૂર છે કે સિગ્નલના નમૂના લીધા પછી સ્પેક્ટ્રમનો જે ભાગ આપણને રુચિ ધરાવે છે તે એકબીજાને ઓવરલેપ ન કરે, અને જો સિગ્નલ પૂરતા પ્રમાણમાં સાંકડી હોય (સ્પેક્ટ્રમના બિન-શૂન્ય ભાગની નાની "પહોળાઈ" હોય), પછી આ પરિણામ ઘણીવાર સિગ્નલની મહત્તમ આવર્તન કરતાં બમણી ઓછી સેમ્પલિંગ આવર્તન પર પ્રાપ્ત કરી શકાય છે. આ તકનીકને "અંડરસેમ્પલિંગ" (સબસેમ્પલિંગ, બેન્ડપાસ સેમ્પલિંગ) કહેવામાં આવે છે અને તમામ પ્રકારના રેડિયો સિગ્નલની પ્રક્રિયામાં તેનો વ્યાપકપણે ઉપયોગ થાય છે. ઉદાહરણ તરીકે, જો આપણે ફ્રિક્વન્સી બેન્ડમાં 88 થી 108 MHz સુધી કાર્યરત FM રેડિયો લઈએ, તો તેને ડિજિટાઈઝ કરવા માટે આપણે કોટેલનિકોવના પ્રમેય દ્વારા ધારેલા 216 MHz ને બદલે માત્ર 43.5 MHz ની આવર્તન સાથે ADC નો ઉપયોગ કરી શકીએ છીએ. આ કિસ્સામાં, જો કે, તમારે ઉચ્ચ-ગુણવત્તાવાળા ADC અને સારા ફિલ્ટરની જરૂર પડશે.

મને નોંધ લેવા દો કે નીચા ઓર્ડરની ફ્રીક્વન્સીઝ સાથે ઉચ્ચ ફ્રીક્વન્સીઝનું "ડુપ્લિકેશન" એ સિગ્નલ સેમ્પલિંગની તાત્કાલિક મિલકત છે જે પરિણામને બદલી ન શકાય તેવી રીતે "બગાડે છે". તેથી, જો સિગ્નલ, સૈદ્ધાંતિક રીતે, ઉચ્ચ-ઓર્ડર ફ્રીક્વન્સીઝ (એટલે ​​​​કે, લગભગ હંમેશા) સમાવી શકે છે, તો ADC ની સામે એક એનાલોગ ફિલ્ટર મૂકવામાં આવે છે, જે મૂળ સિગ્નલમાં બિનજરૂરી દરેક વસ્તુને "કાપી નાખે છે". આ કરવામાં મોડું થશે). આ ફિલ્ટર્સની લાક્ષણિકતાઓ, એનાલોગ ઉપકરણો તરીકે, આદર્શ નથી, તેથી સિગ્નલને કેટલાક "નુકસાન" હજુ પણ થાય છે, અને વ્યવહારમાં તે અનુસરે છે કે સ્પેક્ટ્રમમાં સૌથી વધુ ફ્રીક્વન્સીઝ, નિયમ તરીકે, અવિશ્વસનીય છે. આ સમસ્યાને ઘટાડવા માટે, ઇનપુટ એનાલોગ ફિલ્ટરને ઓછી બેન્ડવિડ્થ પર સેટ કરીને અને એડીસીની સૈદ્ધાંતિક રીતે ઉપલબ્ધ આવર્તન શ્રેણીના માત્ર નીચેના ભાગનો ઉપયોગ કરીને સિગ્નલને ઘણીવાર ઓવરસેમ્પલ કરવામાં આવે છે.

અન્ય સામાન્ય ગેરસમજ, માર્ગ દ્વારા, જ્યારે DAC આઉટપુટ પર સિગ્નલ "સ્ટેપ્સ" માં દોરવામાં આવે છે. "પગલાઓ" પહોળાઈ T અને ઊંચાઈ 1 ના લંબચોરસ કાર્ય સાથે નમૂનારૂપ સિગ્નલ સિક્વન્સના કન્વ્યુલેશનને અનુરૂપ છે:

આ ટ્રાન્સફોર્મેશન સાથેના સિગ્નલ વર્ણપટને આ લંબચોરસ ફંક્શનના ફ્યુરિયર ટ્રાન્સફોર્મ દ્વારા ગુણાકાર કરવામાં આવે છે, અને સમાન લંબચોરસ ફંક્શન માટે તે ફરીથી sinc(w), “ખેંચાયેલ” છે, અનુરૂપ લંબચોરસની પહોળાઈ જેટલી નાની હશે. આવા "DAC" સાથેના નમૂનારૂપ સિગ્નલના સ્પેક્ટ્રમને આ સ્પેક્ટ્રમ દ્વારા પોઈન્ટ દ્વારા પોઈન્ટનો ગુણાકાર કરવામાં આવે છે. આ કિસ્સામાં, સ્પેક્ટ્રમની "વધારાની નકલો" સાથે બિનજરૂરી ઉચ્ચ ફ્રીક્વન્સીઝ સંપૂર્ણપણે કાપી નાખવામાં આવતી નથી, પરંતુ સ્પેક્ટ્રમના "ઉપયોગી" ભાગનો ઉપરનો ભાગ, તેનાથી વિપરીત, ક્ષીણ થાય છે.

વ્યવહારમાં, અલબત્ત, કોઈ આ કરતું નથી. DAC બનાવવા માટે ઘણા જુદા જુદા અભિગમો છે, પરંતુ વેઇટિંગ-ટાઇપ DAC ની સૌથી નજીકના અર્થમાં પણ, DAC માં લંબચોરસ કઠોળ, તેનાથી વિપરિત, શક્ય તેટલું ટૂંકું પસંદ કરવામાં આવે છે (ડેલ્ટાના વાસ્તવિક ક્રમની અંદાજિત કાર્યો) સ્પેક્ટ્રમના ઉપયોગી ભાગના અતિશય દમનને ટાળવા માટે. પરિણામી બ્રોડબેન્ડ સિગ્નલમાં "વધારાની" ફ્રીક્વન્સીઝ લગભગ હંમેશા એનાલોગ લો-પાસ ફિલ્ટર દ્વારા સિગ્નલ પસાર કરીને રદ કરવામાં આવે છે, જેથી કન્વર્ટરની "અંદર" અથવા, ખાસ કરીને, તેના આઉટપુટ પર કોઈ "ડિજિટલ પગલાં" ન હોય.

જો કે, ચાલો ફોરિયર ટ્રાન્સફોર્મ પર પાછા જઈએ. ઉપર વર્ણવેલ ફોરિયર ટ્રાન્સફોર્મ પ્રી-સેમ્પલ સિગ્નલ સિક્વન્સ પર લાગુ થાય છે તેને ડિસ્ક્રીટ ટાઈમ ફોરિયર ટ્રાન્સફોર્મ (DTFT) કહેવાય છે. આવા રૂપાંતરણ દ્વારા મેળવેલ સ્પેક્ટ્રમ હંમેશા 1/T-સામયિક હોય છે, તેથી DTFT સ્પેક્ટ્રમ સંપૂર્ણપણે સેગમેન્ટ પરના તેના મૂલ્યો દ્વારા નક્કી કરવામાં આવે છે, n=0,…,N-1 - મૂળ જટિલ સિગ્નલ જેમાં N નો સમાવેશ થાય છે. જટિલ સંખ્યાઓ. ચાલો X[k], k=0,…N-1 - તેનો જટિલ સ્પેક્ટ્રમ, N જટિલ સંખ્યાઓનો પણ સમાવેશ કરીએ. પછી વાજબી નીચેના સૂત્રોડાયરેક્ટ અને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ્સ:

જો આપણે આ સૂત્રોનો ઉપયોગ કરીને સ્પેક્ટ્રમમાં વાસ્તવિક સિગ્નલનું વિઘટન કરીએ, તો સ્પેક્ટ્રમના પ્રથમ N/2+1 જટિલ ગુણાંક "સામાન્ય" વાસ્તવિક DFT ના સ્પેક્ટ્રમ સાથે મેળ ખાશે, જે "જટિલ" સ્વરૂપમાં પ્રસ્તુત છે અને બાકીના ગુણાંકો. અડધા સેમ્પલિંગ આવર્તનની તુલનામાં તેમનું સપ્રમાણ પ્રતિબિંબ હશે. કોસાઈન ગુણાંક માટે પ્રતિબિંબ સમ છે, અને સાઈન ગુણાંક માટે તે વિષમ છે.

2D DFT

છબીઓ માટે કે જે દ્વિ-પરિમાણીય સંકેત છે, સ્પેક્ટ્રમ એ દ્વિ-પરિમાણીય સંકેત પણ છે. ફ્યુરિયર ટ્રાન્સફોર્મના આધારભૂત કાર્યોનું સ્વરૂપ છે:

તદુપરાંત, તબક્કાઓ પણ અલગ હોઈ શકે છે. છબીમાં, આ દરેક આધારભૂત કાર્યો ચોક્કસ આવર્તન, ચોક્કસ અભિગમ અને ચોક્કસ તબક્કાના તરંગને રજૂ કરે છે.

અહીં N 1 xN 2 એ મૂળ સિગ્નલનું કદ છે, જે સ્પેક્ટ્રમનું કદ પણ છે. k 1 અને k 2 એ આધારભૂત કાર્યોની સંખ્યા છે (દ્વિ-પરિમાણીય DFT ના ગુણાંકની સંખ્યા કે જેના પર આ કાર્યો જોવા મળે છે). સ્પેક્ટ્રમનું કદ મૂળ સિગ્નલના કદ જેટલું હોવાથી, પછી k 1 = 0,...,N 1 -1; k 2 = 0, …,N 2 -1.

n 1 અને n 2 એ આધારભૂત કાર્યોની ચલ દલીલો છે. આધારભૂત કાર્યોની વ્યાખ્યાનું ડોમેન સિગ્નલની વ્યાખ્યાના ડોમેન સાથે એકરુપ હોવાથી, પછી n 1 = 0,...,N 1 -1; n 2 = 0,…,N 2 -1.

દ્વિ-પરિમાણીય DFT (જટિલ સ્વરૂપમાં) નીચેના સૂત્રો દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે (અહીં x એ મૂળ સંકેત છે અને X એ તેનું સ્પેક્ટ્રમ છે):

ઉપરોક્ત સૂત્રોનો ઉપયોગ કરીને દ્વિ-પરિમાણીય DFTની સીધી ગણતરી માટે પ્રચંડ કોમ્પ્યુટેશનલ ખર્ચની જરૂર પડે છે. જો કે, તે સાબિત કરી શકાય છે કે દ્વિ-પરિમાણીય DFT પાસે વિભાજિતતા ગુણધર્મ છે, એટલે કે. તેની ગણતરી બે પરિમાણમાંથી ક્રમિક રીતે કરી શકાય છે.

દ્વિ-પરિમાણીય DFT ની ગણતરી કરવા માટે, તે છબીની બધી પંક્તિઓના એક-પરિમાણીય જટિલ DFT ની ગણતરી કરવા માટે પૂરતું છે, અને પછી પરિણામી "ઇમેજ" માં તમામ કૉલમના એક-પરિમાણીય જટિલ DFT ની ગણતરી કરો.

આ કિસ્સામાં, તમામ એક-પરિમાણીય જટિલ DFTs ના પરિણામો આ DFTs માટેના મૂળ ડેટાની જગ્યાએ લખેલા હોવા જોઈએ. ઉદાહરણ તરીકે, છબીની પ્રથમ પંક્તિના એક-પરિમાણીય DFTની ગણતરી કરતી વખતે, તમારે આ છબીની પ્રથમ પંક્તિમાં DFT પરિણામ લખવાની જરૂર છે (તેનું કદ સમાન છે). આ કરવા માટે, તમારે દરેક "પિક્સેલ" ને જટિલ સંખ્યા તરીકે સંગ્રહિત કરવાની જરૂર છે.

આમ, ઈમેજના DFT ની ગણતરી કરવા માટે એક અસરકારક અલ્ગોરિધમ એ છે કે પ્રથમ બધી પંક્તિઓમાંથી અને પછી ઈમેજના તમામ કૉલમમાંથી એક-પરિમાણીય FFT ની ગણતરી કરવી.

આધુનિક સંચાર તકનીકની સ્પેક્ટ્રલ વિશ્લેષણ વિના કલ્પના કરી શકાતી નથી. માં સિગ્નલોનું પ્રતિનિધિત્વ આવર્તન ડોમેનતેમની લાક્ષણિકતાઓના વિશ્લેષણ માટે અને રેડિયો કમ્યુનિકેશન સિસ્ટમ્સના ટ્રાન્સસીવર્સના બ્લોક્સ અને એકમોના વિશ્લેષણ માટે બંને જરૂરી છે. સિગ્નલોને ફ્રીક્વન્સી ડોમેનમાં કન્વર્ટ કરવા માટે, ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મનો ઉપયોગ થાય છે. ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ માટે સામાન્ય સૂત્ર નીચે મુજબ લખાયેલ છે:

આવર્તન વિશ્લેષણ માટેના આ સૂત્રમાંથી જોઈ શકાય છે તેમ, સમય ડોમેનમાં પ્રસ્તુત સિગ્નલ અને આપેલ આવર્તન સાથેના જટિલ ઘાતાંકીય વચ્ચેના સહસંબંધ અવલંબનની ગણતરી કરવામાં આવે છે. આ કિસ્સામાં, યુલરના સૂત્ર મુજબ, જટિલ ઘાતાંકીય વાસ્તવિક અને કાલ્પનિક ભાગમાં વિઘટિત થાય છે:

(2)

ફ્રિક્વન્સી ડોમેનમાં દર્શાવવામાં આવતા સિગ્નલને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મનો ઉપયોગ કરીને ટાઇમ ડોમેનમાં પાછું રૂપાંતરિત કરી શકાય છે. ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ માટે સામાન્ય સૂત્ર નીચે મુજબ લખાયેલ છે:

(3)

ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ ફોર્મ્યુલા માઇનસ અનંતથી અનંત સુધી સમયના એકીકરણનો ઉપયોગ કરે છે. સ્વાભાવિક રીતે આ એક ગાણિતિક અમૂર્ત છે. વાસ્તવિક પરિસ્થિતિઓમાં, આપણે સમયની આપેલ ક્ષણમાંથી એકીકરણ કરી શકીએ છીએ, જેને આપણે 0 તરીકે દર્શાવી શકીએ છીએ, સમયની T ક્ષણ સુધી. ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ માટેનું સૂત્ર નીચેના સ્વરૂપમાં રૂપાંતરિત થશે:

(4)

પરિણામે ફોરિયર ટ્રાન્સફોર્મના ગુણધર્મો નોંધપાત્ર રીતે બદલાય છે. સતત કાર્યને બદલે સિગ્નલ સ્પેક્ટ્રમ મૂલ્યોની એક અલગ શ્રેણી બની જાય છે. હવે લઘુત્તમ આવર્તન અને તે જ સમયે સિગ્નલ સ્પેક્ટ્રમના આવર્તન મૂલ્યોનું પગલું બને છે:

, (5)

ફ્રીક્વન્સીઝ સાથે માત્ર sin અને cos ફંક્શન્સ k/Tપરસ્પર ઓર્થોગોનલ હશે, અને આ ફોરિયર ટ્રાન્સફોર્મ માટે અનિવાર્ય સ્થિતિ છે. ફ્યુરિયર શ્રેણીના વિસ્તરણના પ્રથમ કાર્યોનો સમૂહ આકૃતિ 1 માં બતાવવામાં આવ્યો છે. આ કિસ્સામાં, કાર્યોની અવધિ વિશ્લેષણની અવધિ સાથે એકરુપ છે. ટી.


આકૃતિ 1. ફોરિયર શ્રેણીના વિસ્તરણ કાર્યો

હવે સિગ્નલ સ્પેક્ટ્રમ આકૃતિ 2 માં બતાવ્યા પ્રમાણે દેખાશે.



આકૃતિ 2. કાર્યનું સ્પેક્ટ્રમ x(t) જ્યારે મર્યાદિત સમય અંતરાલ પર વિશ્લેષણ કરવામાં આવે છે

આ કિસ્સામાં, ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ (4) ની ગણતરી માટેનું સૂત્ર નીચેના સ્વરૂપમાં રૂપાંતરિત થાય છે:

(6)

મર્યાદિત સમયગાળામાં સ્પેક્ટ્રમ નક્કી કરવાના કિસ્સામાં વ્યસ્ત ફ્યુરિયર ટ્રાન્સફોર્મ માટેનું સૂત્ર આના જેવું દેખાશે:

(7)

એ જ રીતે, તમે ડિજિટલ સિગ્નલ નમૂનાઓ માટે ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ માટે સૂત્ર નક્કી કરી શકો છો. સતત સંકેતને બદલે તેના ડિજિટલ નમૂનાઓનો ઉપયોગ કરવામાં આવે છે તે ધ્યાનમાં લેતા, અભિવ્યક્તિ (6) માં અવિભાજ્યને સરવાળો દ્વારા બદલવામાં આવે છે. આ કિસ્સામાં, વિશ્લેષણ કરેલ સિગ્નલની અવધિ ડિજિટલ નમૂનાઓની સંખ્યા દ્વારા નક્કી કરવામાં આવે છે એન. ડિજિટલ સિગ્નલ નમૂનાઓ માટે ફોરિયર ટ્રાન્સફોર્મને ડિસ્ક્રીટ ફોરિયર ટ્રાન્સફોર્મ કહેવામાં આવે છેઅને નીચે પ્રમાણે લખાયેલ છે:

(8)

હવે ચાલો જોઈએ કે મર્યાદિત સમય અંતરાલમાં ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મની સરખામણીમાં ડિસ્ક્રીટ ફોરિયર ટ્રાન્સફોર્મ (DFT) ના ગુણધર્મો કેવી રીતે બદલાયા છે. જ્યારે અમે એનાલોગ સિગ્નલ સેમ્પલિંગ પર જોયું, ત્યારે અમે શીખ્યા કે ઇનપુટ સિગ્નલ સ્પેક્ટ્રમ આવર્તન મર્યાદિત હોવું જોઈએ. આ જરૂરિયાત સિગ્નલ સ્પેક્ટ્રમના અલગ ઘટકોની સંખ્યાને મર્યાદિત કરે છે. શરૂઆતમાં એવું લાગે છે કે આપણે સિગ્નલના સ્પેક્ટ્રમને ફ્રીક્વન્સી સુધી મર્યાદિત કરી શકીએ છીએ f d/2, જે આવર્તન ઘટકોની સંખ્યાને અનુરૂપ છે K=N/2. જોકે, આ સાચું નથી. સકારાત્મક ફ્રીક્વન્સીઝ અને નેગેટિવ ફ્રીક્વન્સીઝ માટે વાસ્તવિક સિગ્નલ સેમ્પલ માટે સિગ્નલ સ્પેક્ટ્રમ લગભગ 0 સપ્રમાણ હોય છે, કેટલાક સ્પેક્ટ્રમ અલ્ગોરિધમ્સ માટે નેગેટિવ ફ્રીક્વન્સીની જરૂર પડી શકે છે, જેમ કે. ઇનપુટ સિગ્નલના જટિલ નમૂનાઓ પર સ્વતંત્ર ફોરિયર ટ્રાન્સફોર્મ કરતી વખતે તફાવત એ પણ વધારે છે. પરિણામે, ડિજિટલ સિગ્નલના સ્પેક્ટ્રમનું સંપૂર્ણ વર્ણન કરવા માટે, તે જરૂરી છે એનઆવર્તન નમૂનાઓ ( k = 0, ..., N/2).

ડાયરેક્ટ અને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ માટે પ્રોગ્રામ કોડ આપવામાં આવ્યો છે. ઝડપી ફોરિયર ટ્રાન્સફોર્મ ગણવામાં આવે છે.

અલગ રૂપાંતરફોરિયર ટ્રાન્સફોર્મ (DFT) એ એક શક્તિશાળી વિશ્લેષણ સાધન છે જેનો વ્યાપકપણે ડિજિટલ સિગ્નલ પ્રોસેસિંગ (DSP) ક્ષેત્રમાં ઉપયોગ થાય છે. ત્યાં સીધા અને છે વ્યસ્ત રૂપાંતરફોરિયર. ડાયરેક્ટ ડિસ્ક્રીટ ફોરિયર ટ્રાન્સફોર્મ સિગ્નલને ટાઇમ ડોમેનમાંથી ફ્રીક્વન્સી ડોમેનમાં રૂપાંતરિત કરે છે અને તેનો ઉપયોગ સિગ્નલના ફ્રીક્વન્સી સ્પેક્ટ્રમનું વિશ્લેષણ કરવા માટે થાય છે. વ્યસ્ત રૂપાંતર બરાબર વિરુદ્ધ કરે છે: સિગ્નલના ફ્રીક્વન્સી સ્પેક્ટ્રમનો ઉપયોગ કરીને, તે સમયના ડોમેનમાં સિગ્નલનું પુનર્નિર્માણ કરે છે.

ફ્યુરિયર ટ્રાન્સફોર્મની ગણતરી કરવા માટે, સામાન્ય રીતે પ્રવેગક ગણતરી પ્રક્રિયાનો ઉપયોગ કરવામાં આવે છે - કહેવાતા. ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મ (FFT). આ તમને એકદમ જટિલ અને સંસાધન-સઘન ગાણિતિક ગણતરીઓ માટે પ્રોસેસર સમયને નોંધપાત્ર રીતે ઘટાડવાની મંજૂરી આપે છે.

1 જટિલસંખ્યાઓ

પ્રથમ, આપણને એક સહાયક વર્ગની જરૂર છે જે જટિલ સંખ્યાઓનું વર્ણન કરશે. જટિલ સંખ્યાઓ ગણિતમાં એક વિશિષ્ટ પ્રકારની સંખ્યાઓ છે. દરેક જટિલ સંખ્યા બે ભાગો ધરાવે છે - વાસ્તવિક અને કાલ્પનિક. હવે આપણા માટે DFT ના સંબંધમાં જટિલ સંખ્યાઓ વિશે જાણવા માટે તે પૂરતું છે કે જટિલ સંખ્યાનો વાસ્તવિક ભાગ સિગ્નલ કંપનવિસ્તાર વિશેની માહિતી સંગ્રહિત કરે છે, અને કાલ્પનિક ભાગ તબક્કા વિશેની માહિતી સંગ્રહિત કરે છે.

જટિલ સંખ્યાઓનું વર્ણન કરવા માટેનો વર્ગ કોડ(આજુબાજુ ફેરવે છે) """ """ જટિલ નંબર."""સાર્વજનિક વર્ગ સંકુલ નંબર """ """ જટિલ સંખ્યાનો વાસ્તવિક ભાગ."""પબ્લિક રિયલ એઝ ડબલ = 0 """ """ જટિલ સંખ્યાનો કાલ્પનિક ભાગ."""ડબલ = 0 સાર્વજનિક સબ ન્યૂ() વાસ્તવિક = 0 કાલ્પનિક = 0 અંત સબ """ તરીકે જાહેર કાલ્પનિક """ એક જટિલ સંખ્યા બનાવે છે.""" """ જટિલ સંખ્યાનો વાસ્તવિક ભાગ. """ જટિલ સંખ્યાનો કાલ્પનિક ભાગ.સાર્વજનિક સબ ન્યૂ(ByVal r એઝ ડબલ, વૈકલ્પિક ByVal im ડબલ = 0 તરીકે) Real = r કાલ્પનિક = im End Sub Private usCult As New Globalization. CultureInfo("en-US") "અમે સંસ્કૃતિ "en-US" નો ઉપયોગ કરીએ છીએ તેથી કે આખા અને અપૂર્ણાંક ભાગો અલ્પવિરામ """ દ્વારા નહીં, પરંતુ બિંદુ દ્વારા અલગ કરવામાં આવ્યા હતા """ વાસ્તવિક અને કાલ્પનિક ભાગનો સમાવેશ કરતી સ્ટ્રિંગ પરત કરે છે, જે ટેબ કેરેક્ટર દ્વારા અલગ પડે છે. """સાર્વજનિક ઓવરરાઇડ ફંક્શન ToString() સ્ટ્રિંગ રીટર્ન તરીકે (Real.ToString(usCult) અને ControlChars.Tab અને Imaginary.ToString(usCult)) સમાપ્ત કાર્ય સમાપ્તિ વર્ગ

2 ડાયરેક્ટ અલગ ઝડપીફોરિયર ટ્રાન્સફોર્મ

જટિલ સંખ્યાઓની એરે ફંક્શન ઇનપુટ પર પસાર થાય છે. જેનો વાસ્તવિક ભાગ નિયમિત અંતરાલો પર વાંચન સાથે, એક મનસ્વી અલગ સંકેતનું પ્રતિનિધિત્વ કરે છે. કાલ્પનિક ભાગમાં શૂન્ય હોય છે. સિગ્નલમાં નમૂનાઓની સંખ્યા બેની શક્તિ જેટલી હોવી જોઈએ. જો તમારું સિગ્નલ ટૂંકું હોય, તો તેને શૂન્ય સાથે 2: 256, 512, 1024, વગેરેના ગુણાંકમાં પેડ કરો. સિગ્નલ જેટલો લાંબો છે, ગણતરી કરેલ સ્પેક્ટ્રમનું ઉચ્ચ આવર્તન રીઝોલ્યુશન.

VB.NET માં ડાયરેક્ટ ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મની ગણતરી કરવા માટેનો કોડ(આજુબાજુ ફેરવે છે) """ """ ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મ પદ્ધતિનો ઉપયોગ કરીને સિગ્નલના સ્પેક્ટ્રમની ગણતરી કરે છે. ફક્ત (N/2+1) વળતર મૂલ્યોનો ઉપયોગ કરો (નમૂના દરના અડધા સુધી). """ """ સંખ્યાબંધ નમૂનાઓ ધરાવતો સિગ્નલ જે બેની ઘાતનો ગુણાંક છે અને તેમાં વાસ્તવિક અને કાલ્પનિક ભાગનો સમાવેશ થાય છે. સિગ્નલના તમામ કાલ્પનિક ભાગો શૂન્યથી ભરેલા છે. """ જટિલ સ્પેક્ટ્રમ સંખ્યાઓની શ્રેણી પરત કરે છે. """ માત્ર પ્રથમ N/2+1 નોંધપાત્ર છે, બાકીના સપ્રમાણ ભાગ છે જે નકારાત્મક આવર્તનોને અનુરૂપ છે." આવર્તન). """ સેમ્પલિંગ ફ્રીક્વન્સીના અડધાથી ઉપરના મૂલ્યો - ઉપયોગ કરશો નહીં. """પબ્લિક શેર્ડ ફંક્શન FFT(ByVal સિગ્નલ As ComplexNumber()) As ComplexNumber() Integer = signal તરીકે ડિમ ઓર્ડર. લંબાઈ "DFT ઓર્ડર CheckFftOrder(order) "તપાસો કે ઓર્ડર બે ડિમ સ્પેક્ટ્રમનો પાવર છે. j પૂર્ણાંક તરીકે = સ્પેક્ટ્રમલેન "બિટ રિવર્સ સૉર્ટ: માટે i પૂર્ણાંક તરીકે = 1 ઓર્ડર કરવા માટે - 2 જો (i< j) Then Dim tmpRe As Double = signal(j).Real Dim tmpIm As Double = signal(j).Imaginary signal(j).Real = signal(i).Real signal(j).Imaginary = signal(i).Imaginary signal(i).Real = tmpRe signal(i).Imaginary = tmpIm End If Dim k As Integer = spectrumLen Do Until (k >j) j -= k k \= 2 લૂપ j += k આગળ "વિસ્તરણ સ્તરો દ્વારા લૂપ કરો: પૂર્ણાંક તરીકે સ્તર = 1 થી CInt(Math.Log(order) / Math.Log(2)) Dim lvl as Integer = CInt (2 ^ સ્તર) મંદ lvl2 પૂર્ણાંક તરીકે = lvl \ 2 મંદ tmp as Double = Math.PI / lvl2 Dim sr As Double = Math.Cos(tmp) Dim si as Double = -Math.Sin(tmp) Dim tr એઝ ડબલ = 0 ડિમ યુર એઝ ડબલ = 1 ડિમ યુઆઈ એઝ ડબલ = 0 માટે j માટે પૂર્ણાંક તરીકે = 1 થી lvl2 "એક લેવલની અંદર સ્પેક્ટ્રા દ્વારા સાયકલ ફોર i એઝ ઈન્ટીજર = (jj - 1) માટે (ક્રમ - 1) સ્ટેપ lvl "ચક્ર દ્વારા વ્યક્તિગત "પતંગિયા" મંદ ip પૂર્ણાંક તરીકે = i + lvl2 tr = સિગ્નલ(ip).Real * ur - signal(ip).કલ્પના * ui "બટરફ્લાય ઓપરેશન" Dim ti As Double = signal(ip).Real * ui + સિગ્નલ (ip).કાલ્પનિક * ur સિગ્નલ(ip).Real = signal(i).Real - tr signal(ip).Imaginary = signal(i).કાલ્પનિક - ti signal(i).Real = signal(i).Real + tr સિગ્નલ(i).Imaginary = signal(i).કલ્પનારી + ti Next tr = ur ur = tr * sr - ui * si ui = tr * si + ui * sr આગળ આગળ "પ્રક્રિયા કરેલ જટિલ સંખ્યાઓની એરે ભરો એફએફટી દ્વારા: ડિમ સ્પેક્ટ્રમ(ઓર્ડર - 1) પૂર્ણાંક તરીકે i માટે જટિલ સંખ્યા = 0 ઓર્ડર કરવા માટે - 1 સિગ્નલ(i) સ્પેક્ટ્રમ(i) સાથે = નવી જટિલ સંખ્યા (. વાસ્તવિક, . કાલ્પનિક) નેક્સ્ટ રીટર્ન સ્પેક્ટ્રમ એન્ડ ફંક્શન સાથે સમાપ્ત થાય છે

3 વિપરીત અલગ ઝડપીફોરિયર ટ્રાન્સફોર્મ

ઇનવર્સ ડિસ્ક્રીટ ફોરિયર ટ્રાન્સફોર્મ (IDFT), ગણતરીના તબક્કાઓમાંથી એક, જટિલ સંખ્યાઓની એરે પર સીધો DFT સમાવે છે, જ્યાં કાલ્પનિક ભાગ સ્પેક્ટ્રમના કાલ્પનિક ભાગના X-અક્ષના સંદર્ભમાં વ્યુત્ક્રમ છે.

VB.NET માં ઇન્વર્સ ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મની ગણતરી કરવા માટેનો કોડ(આજુબાજુ ફેરવે છે) """ """ ઇન્વર્સ ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મ પદ્ધતિનો ઉપયોગ કરીને તેના સ્પેક્ટ્રમમાંથી સિગ્નલ પુનઃસ્થાપિત કરે છે.""" """ સંખ્યાબંધ નમૂનાઓ ધરાવતો સિગ્નલ સ્પેક્ટ્રમ જે બેની ઘાતનો ગુણાંક છે અને તેમાં વાસ્તવિક અને કાલ્પનિક ભાગનો સમાવેશ થાય છે.સાર્વજનિક વહેંચાયેલ કાર્ય inverseFFT(ByVal સ્પેક્ટ્રમ As ComplexNumber()) As ComplexNumber() Integer = સ્પેક્ટ્રમ તરીકે મંદ ક્રમ. લંબાઈ "Inverse DFT ક્રમ. CheckFftOrder(order) "કાલ્પનિક ભાગના તત્વોના અંકગણિત ચિહ્નને બદલવું: હું પૂર્ણાંક તરીકે = 0 થી સ્પેક્ટ્રમ લંબાઈ - 1 સ્પેક્ટ્રમ(i). કાલ્પનિક = -સ્પેક્ટ્રમ(i). કાલ્પનિક આગળ "પ્રત્યક્ષ FFT ગણતરી: મંદ ડાયરેક્ટFFT કોમ્પ્લેક્સનમ્બર() = FFT(સ્પેક્ટ્રમ) "સમય ડોમેનમાં ક્રમ પ્રમાણે વિભાજન. કાલ્પનિક ભાગનું અંકગણિત ચિહ્ન: ડિમ સિગ્નલ (ડાયરેક્ટએફએફટી. લંબાઈ - 1) જટિલ સંખ્યા તરીકે i માટે પૂર્ણાંક તરીકે = 0 થી ડાયરેક્ટFFT. લંબાઈ - 1 ડિમ રેક્સ એઝ ડબલ = ડાયરેક્ટએફએફટી(i). રીઅલ / ઓર્ડર ડિમ આઈએમએક્સ ડબલ = -ડાયરેક્ટએફએફટી તરીકે (i).કાલ્પનિક / ઓર્ડર સિગ્નલ(i) = નવો કોમ્પ્લેક્સ નંબર(ReX, ImX) આગામી રીટર્ન સિગ્નલ સમાપ્ત કાર્ય

અને અલબત્ત, અમે ઉપયોગમાં લેવાતી પદ્ધતિનું વર્ણન કરીશું, જે પાસ કરેલ એરેના ઘટકોની સંખ્યા તપાસે છે:

"""

""" તપાસે છે કે શું FFT ઓર્ડર બેની શક્તિ છે, અને જો નહીં, તો અપવાદ ફેંકે છે.""" """ FFT ઓર્ડર.પ્રાઇવેટ શેર કરેલ સબ ચેકએફફ્ટઓર્ડર(સંપૂર્ણાંક તરીકે બાયવલ ઓર્ડર) ડબલ તરીકે ડિમ chk = Math.Abs(Math.Floor(Math.Log(order, 2)) - Math.Log(order, 2)) If (chk > 0.0001) પછી ફેંકો નવો આર્ગ્યુમેન્ટ એક્સેપ્શન(સ્ટ્રિંગ.ફોર્મેટ("એરેની લંબાઈ ((0)) એ બેનો પાવર નથી.", ઓર્ડર)) એન્ડ જો એન્ડ સબ

4 આગળ અને રિવર્સ તપાસી રહ્યું છેફોરિયર ટ્રાન્સફોર્મ

હવે ચાલો તપાસ કરીએ કે અમારા કાર્યો કામ કરે છે. આ કરવા માટે, ચાલો ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ મિકેનિઝમ દ્વારા મનસ્વી સિગ્નલ પસાર કરીએ, અને પછી ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મનો ઉપયોગ કરીને તેને "એસેમ્બલ" કરીએ. પુનઃનિર્માણ કરેલ સિગ્નલ લગભગ મૂળ સિગ્નલ જેવું જ હોવું જોઈએ. કોમ્પ્યુટર પર સંખ્યાઓ સાથે કામ કરતી વખતે રાઉન્ડિંગ ભૂલો થાય છે, તેથી સિગ્નલો સંપૂર્ણપણે સરખા નહીં હોય, પરંતુ એકબીજાથી તેમનું વિચલન નજીવું હોવું જોઈએ.

ઉદાહરણ તરીકે, ચાલો સાઈન ફંક્શનને સ્ત્રોત સિગ્નલ તરીકે લઈએ અને આના જેવા 128 નમૂનાઓની લંબાઈ સાથે ડેટા જનરેટ કરીએ:

મંદ cn(127) પૂર્ણાંક તરીકે i માટે જટિલ સંખ્યા = 0 થી cn. લંબાઈ - 1 cn(i) = નવી જટિલ સંખ્યા(Math.Sin(i * 3 * Math.PI / 180)) આગળ

અમને આ સંકેત મળે છે:

અહીં, X અક્ષ એ સમયના ડોમેનમાં નમૂનાઓની સંખ્યા છે, અને Y અક્ષ એ કંપનવિસ્તાર છે. મહેરબાની કરીને નોંધ કરો કે સિગ્નલમાં ફક્ત વાસ્તવિક ભાગોનો સમાવેશ થાય છે, અને સમગ્ર સેગમેન્ટમાં કાલ્પનિક ભાગ "0" ની બરાબર છે.

હવે ચાલો આ સિગ્નલને FFT() ફંક્શનના ઇનપુટમાં પાસ કરીએ. ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ દરમિયાન મેળવેલ જટિલ સંખ્યાઓના એરેનો ઉપયોગ કરીને, અમે બે ગ્રાફ બનાવીશું - સ્પેક્ટ્રમના વાસ્તવિક (રી) અને કાલ્પનિક (Im) ભાગો:


અહીં, X અક્ષ એ ફ્રીક્વન્સી ડોમેનમાં નમૂનાઓ છે, અને Y અક્ષ એ કંપનવિસ્તાર છે. વાસ્તવિક આવર્તન મૂલ્યો મેળવવા માટે, તેમની ગણતરી કરવી જરૂરી છે, તે ધ્યાનમાં લેતા કે Y અક્ષનું "0" શૂન્ય આવર્તનને અનુરૂપ છે, Y અક્ષની મહત્તમ સેમ્પલિંગ આવર્તનને અનુરૂપ છે.

અમે પરિણામી સિગ્નલ સ્પેક્ટ્રમને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ ફંક્શન IFFT()માં ટ્રાન્સફર કરીશું. ચાલો જટિલ સંખ્યાઓની શ્રેણી મેળવીએ, જ્યાં વાસ્તવિક ભાગમાં પુનઃનિર્માણ કરેલ સિગ્નલ હશે:


જેમ તમે જોઈ શકો છો, પુનઃનિર્માણ સિગ્નલ સંપૂર્ણપણે મૂળનું પુનરાવર્તન કરે છે.

ફોરિયર પરિવર્તન

ઘણા સિગ્નલોનું વિઘટન કરીને તેમને સાઇનસૉઇડ્સ (હાર્મોનિક્સ) માં પૃથ્થકરણ કરવું અનુકૂળ છે. આના અનેક કારણો છે. ઉદાહરણ તરીકે, માનવ કાન સમાન રીતે કામ કરે છે. તે વિવિધ ફ્રીક્વન્સીઝના વ્યક્તિગત સ્પંદનોમાં અવાજનું વિઘટન કરે છે. વધુમાં, તે બતાવી શકાય છે કે સાઇનુસોઇડ્સ " પોતાના કાર્યો» રેખીય સિસ્ટમો (જ્યારથી તેઓ પસાર થાય છે રેખીય સિસ્ટમો, આકાર બદલ્યા વિના, પરંતુ માત્ર તબક્કા અને કંપનવિસ્તાર બદલી શકે છે). બીજું કારણ એ છે કે કોટેલનિકોવનું પ્રમેય સિગ્નલ સ્પેક્ટ્રમના સંદર્ભમાં ઘડવામાં આવ્યું છે.

ફોરિયર ટ્રાન્સફોર્મ ) એ ફંક્શનનું સાઇનસૉઇડ્સમાં વિઘટન છે (ત્યારબાદ આપણે કોસાઇન ફંક્શન્સને સાઇનસૉઇડ્સ પણ કહીએ છીએ, કારણ કે તેઓ ફક્ત તબક્કામાં જ "વાસ્તવિક" સાઇનસૉઇડ્સથી અલગ પડે છે). ફોરિયર ટ્રાન્સફોર્મના ઘણા પ્રકારો છે.

1. બિન-સામયિક સતત સંકેતને ફોરિયર ઇન્ટિગ્રલમાં વિસ્તૃત કરી શકાય છે.

2. સામયિક સતત સિગ્નલને અનંત ફોરિયર શ્રેણીમાં વિસ્તૃત કરી શકાય છે.

3. બિન-સામયિક અલગ સિગ્નલને ફોરિયર ઇન્ટિગ્રલમાં વિસ્તૃત કરી શકાય છે.

4. સામયિક અલગ સિગ્નલને મર્યાદિત ફોરિયર શ્રેણીમાં વિસ્તૃત કરી શકાય છે.

કમ્પ્યુટર મર્યાદિત માત્રામાં ડેટા સાથે જ કામ કરી શકે છે, તેથી, તે ખરેખર માત્ર છેલ્લા પ્રકારના ફ્યુરિયર ટ્રાન્સફોર્મની ગણતરી કરી શકે છે. ચાલો તેના પર નજીકથી નજર કરીએ.

વાસ્તવિક સંકેત DFT

એક અલગ સિગ્નલ x નો સમયગાળો N પોઈન્ટ ધરાવો. આ કિસ્સામાં, તેને અલગ સાઇનુસોઇડ્સની મર્યાદિત શ્રેણી (એટલે ​​​​કે, રેખીય સંયોજન) તરીકે રજૂ કરી શકાય છે:

2π k (n + ϕ k)

x = ∑ C k cos

(ફોરિયર શ્રેણી)

k = 0

સમકક્ષ સંકેત (આપણે દરેક કોસાઈનને સાઈન અને કોસાઈનમાં વિઘટિત કરીએ છીએ, પરંતુ હવે તબક્કા વગર):

2 π kn

2 π kn

x = ∑ A k cos

+ ∑ B k પાપ

(ફોરિયર શ્રેણી)

k = 0

k = 0

ચોખા. 6. 8-પોઇન્ટ અલગ સિગ્નલ માટે ફ્યુરિયર સિરીઝ બેઝિસ ફંક્શન્સ. ડાબી બાજુએ કોસાઇન્સ છે, જમણી બાજુએ સાઇન છે. ફ્રીક્વન્સીઝ ઉપરથી નીચે સુધી વધે છે.

મૂળભૂત sinusoids બહુવિધ ફ્રીક્વન્સીઝ ધરાવે છે. શ્રેણીનું પ્રથમ પદ (k = 0) એક સ્થિર કહેવાય છે સતત ઘટક(DC ઑફસેટ) સિગ્નલ. ખૂબ જ પ્રથમ સાઇનસૉઇડ (k = 1) ની એવી આવર્તન છે કે તેનો સમયગાળો મૂળ સિગ્નલના સમયગાળા સાથે મેળ ખાય છે. સૌથી વધુ આવર્તન ઘટક (k =N /2) ની એવી આવર્તન છે કે તેનો સમયગાળો બે ગણતરીઓ જેટલો છે. ગુણાંક A k અને

B k ને સિગ્નલ સ્પેક્ટ્રમ (સ્પેક્ટ્રમ) કહેવામાં આવે છે. તેઓ સી-ના કંપનવિસ્તાર દર્શાવે છે.

નુસોઇડ્સ જે સિગ્નલ બનાવે છે. ફ્યુરિયર વિસ્તરણથી બે સંલગ્ન સાઇનસૉઇડ્સ વચ્ચેની આવર્તન પગલું કહેવામાં આવે છે આવર્તન રીઝોલ્યુશનસ્પેક્ટ્રમ

ફિગ માં. આકૃતિ 6 બતાવે છે કે 8 પોઈન્ટથી અલગ સિગ્નલને વિઘટિત કરવા માટે વપરાતા સિનુસોઈડ. દરેક સિનુસોઈડમાં 8 પોઈન્ટ હોય છે, એટલે કે, તે નિયમિત અલગ સિગ્નલ છે. સ્પષ્ટતા માટે આકૃતિમાં સતત સાઇનસૉઇડ્સ બતાવવામાં આવ્યા છે.

દરેક બિંદુ પર ફ્યુરિયર શ્રેણીના સરવાળાની ગણતરી કરીને મૂળ સિગ્નલને કન્વર્ટ કરો. સિગ્નલને સાઇનસૉઇડ્સમાં વિઘટન કરવું (એટલે ​​​​કે ગુણાંક મેળવવું) કહેવાય છે ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ. વિપરીત પ્રક્રિયા - sinusoids નો ઉપયોગ કરીને સિગ્નલ સંશ્લેષણ - કહેવામાં આવે છે ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ(વિપરીત ફોરિયર ટ્રાન્સફોર્મ).

ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ માટેનું અલ્ગોરિધમ સ્પષ્ટ છે (તે ફૌરીયર શ્રેણીના સૂત્રમાં સમાયેલું છે; સંશ્લેષણ કરવા માટે, તમારે ફક્ત તેમાં ગુણાંકને બદલવાની જરૂર છે). ચાલો ડાયરેક્ટ ફોરિયર ટ્રાન્સફોર્મ અલ્ગોરિધમનો વિચાર કરીએ, એટલે કે. A k અને B k ગુણાંક શોધવી.

2 π kn

2 π kn

દલીલમાંથી n એ or- છે

કાર્ય સિસ્ટમ

K = 0,...,

સામયિકની જગ્યામાં ટોગોનલ આધાર અલગ સંકેતોસમયગાળા એન સાથે. આનો અર્થ એ છે કે તેમાં અવકાશના કોઈપણ તત્વ (સિગ્નલ) ને વિઘટિત કરવા માટે, તમારે ગણતરી કરવાની જરૂર છે ડોટ ઉત્પાદનોસિસ્ટમના તમામ કાર્યો સાથે આ તત્વ, અને પરિણામી ગુણાંક સામાન્ય કરવામાં આવે છે. પછી A k અને B k ગુણાંક સાથેનો આધાર વિસ્તરણ સૂત્ર મૂળ સિગ્નલ માટે માન્ય રહેશે.

તેથી, ગુણાંક A k અને B k ની ગણતરી સ્કેલર ઉત્પાદનો તરીકે કરવામાં આવે છે (બિન-

અવિચ્છેદિત કિસ્સામાં - કાર્યોના ઉત્પાદનના અભિન્ન ભાગો, અલગ કિસ્સામાં

- અલગ સંકેતોના ઉત્પાદનમાંથી સરવાળો):

એન − 1

2 π ki , k = 1 માટે,...,

A k =

∑ xcos

−1

N i = 0

એન − 1

A k =

∑ x cos2 π ki , k = 0 માટે,

N i = 0

એન − 1

2πki

NB 0 અને B N 2 હંમેશા શૂન્ય સમાન હોય છે (કારણ કે અનુરૂપ "મૂળભૂત"

સિગ્નલો અલગ બિંદુઓ પર સમાન રીતે શૂન્ય હોય છે), અને વ્યસ્ત અને સીધા પરિવર્તનોફોરિયર.

તેથી, અમને જાણવા મળ્યું છે કે સિગ્નલનું વર્ણપટકીય પ્રતિનિધિત્વ સંપૂર્ણપણે સિગ્નલની સમકક્ષ છે. તમે ફોરવર્ડ અને ઇન્વર્સ ફોરિયર ટ્રાન્સફોર્મ્સનો ઉપયોગ કરીને તેમની વચ્ચે ખસેડી શકો છો. આ રૂપાંતરણોની ગણતરી કરવા માટેનું અલ્ગોરિધમ આપેલ સૂત્રોમાં સમાયેલ છે.

ફોરિયર ટ્રાન્સફોર્મ્સની ગણતરી ખૂબ જ જરૂરી છે મોટી સંખ્યામાંગુણાકાર (લગભગ N 2) અને સાઇન્સની ગણતરીઓ. આ રૂપાંતરણોને વધુ ઝડપથી કરવા માટેની એક રીત છે: લગભગ N log2 N ગુણાકારમાં.

આ પદ્ધતિ કહેવામાં આવે છેફાસ્ટ ફોરિયર ટ્રાન્સફોર્મ (FFT, ફાસ્ટ ફોરિયર ટ્રાન્સફોર્મ ). તે એ હકીકત પર આધારિત છે કે પરિબળો (સાઇન્સ) વચ્ચે ઘણા પુનરાવર્તિત મૂલ્યો છે (સાઇનની સામયિકતાને કારણે). FFT અલ્ગોરિધમ સમાન પરિબળો સાથે શરતોને જૂથબદ્ધ કરે છે, જે ગુણાકારની સંખ્યામાં નોંધપાત્ર ઘટાડો કરે છે. પરિણામે, FFT પ્રદર્શન પ્રમાણભૂત અલ્ગોરિધમ કરતાં સેંકડો ગણું ઝડપી હોઈ શકે છે (આના પર આધાર રાખીનેએન ). તે પર ભાર મૂકવો જોઈએ કે FFT અલ્ગોરિધમ સચોટ છે. તે પ્રમાણભૂત કરતાં પણ વધુ સચોટ છે, કારણ કે કામગીરીની સંખ્યા ઘટાડીને, તે ઓછી રાઉન્ડિંગ ભૂલોમાં પરિણમે છે.

જો કે, મોટાભાગના એફએફટી અલ્ગોરિધમ્સમાં એક વિશિષ્ટતા હોય છે: તે માત્ર ત્યારે જ કાર્ય કરી શકે છે જ્યારે વિશ્લેષણ કરેલ સિગ્નલ N ની લંબાઈ બેની શક્તિ હોય. સામાન્ય રીતે આ પ્રતિનિધિત્વ કરતું નથી મોટી સમસ્યા, કારણ કે વિશ્લેષણ કરેલ સિગ્નલ હંમેશા જરૂરી કદમાં શૂન્ય સાથે પેડ કરી શકાય છે. નંબર

N ને FFT કદ અથવા લંબાઈ કહેવામાં આવે છે.

જટિલ ડીએફટી

અત્યાર સુધી અમે વાસ્તવિક સંકેતોમાંથી DFTs ને ધ્યાનમાં લીધું છે. ચાલો હવે જટિલ સંકેતોના કિસ્સામાં DFT ને સામાન્યીકરણ કરીએ. ચાલો x, n =0,…,N -1 – મૂળ જટિલ સિગ્નલ જેમાં N જટિલ સંખ્યાઓનો સમાવેશ થાય છે. ચાલો X, k =0,…N -1 – તેનો જટિલ વર્ણપટ, N જટિલ સંખ્યાઓનો પણ સમાવેશ કરે છે. પછી પ્રત્યક્ષ અને વ્યસ્ત પરિવર્તન માટે નીચેના સૂત્રો માન્ય છે:

વેની ફોરિયર (અહીં j = − 1):

એન − 1

X [ k] = ∑ x[ n] e− jnk (2 π N )

n = 0

એન − 1

∑ X [ k ] e jnk(2 π N)

Nk = 0

જો આપણે આ સૂત્રોનો ઉપયોગ કરીને વાસ્તવિક સિગ્નલને સ્પેક્ટ્રમમાં વિઘટિત કરીએ, તો સ્પેક્ટ્રમના પ્રથમ N / 2+1 જટિલ ગુણાંક "સામાન્ય" વાસ્તવિક DFT ના સ્પેક્ટ્રમ સાથે મેળ ખાશે, જે "જટિલ" સ્વરૂપમાં પ્રસ્તુત છે અને બાકીના ગુણાંકો. ના સંદર્ભમાં તેમનું સપ્રમાણ પ્રતિબિંબ હશે



શું તમને લેખ ગમ્યો? તમારા મિત્રો સાથે શેર કરો!