యొక్క పని గురించి ఈ వ్యాసం మాకు నేర్పుతుంది FFT MATLABలో.
FFTని అర్థం చేసుకోవడం
ది ఫాస్ట్ ఫోరియర్ ట్రాన్స్ఫార్మ్ (FFT) సిగ్నల్లను విభిన్నంగా అర్థం చేసుకోవడంలో మాకు సహాయపడే ప్రత్యేక సాంకేతికతను సూచిస్తుంది. సాధారణంగా, సంకేతాలు కాలక్రమేణా మారే సంఖ్యల క్రమాలుగా చూపబడతాయి, కానీ వాటితో FFT, సిగ్నల్లో వివిధ పౌనఃపున్యాలు ఏవి ఉన్నాయో మరియు అవి ఎంత బలంగా ఉన్నాయో మనం చూడవచ్చు. ఇది ఒక సిగ్నల్ను దాని సంగీత స్వరాలలోకి విచ్ఛిన్నం చేయడం మరియు ప్రతి స్వరం ఎంత బిగ్గరగా ఉందో చూడటం లాంటిది.
ది FFT అల్గోరిథం సిగ్నల్ డేటాపై చాలా క్లిష్టమైన గణితాన్ని చేస్తుంది. ఇది సిగ్నల్ను తీసుకొని దానిని చిన్న భాగాలుగా విభజిస్తుంది, ఆపై ప్రతి భాగానికి పౌనఃపున్యాలు మరియు వాటి బలాలను గణిస్తుంది. చివరగా, సిగ్నల్ యొక్క ఫ్రీక్వెన్సీ కంటెంట్, దశ సంబంధాలు మరియు ఇతర ముఖ్యమైన లక్షణాల చిత్రాన్ని అందించడానికి ఇది అన్ని ఫలితాలను మిళితం చేస్తుంది.
ఈ టెక్నిక్ అనేక రంగాలలో ఉపయోగించబడుతుంది ఎందుకంటే ఇది సిగ్నల్లను బాగా విశ్లేషించడానికి మరియు అర్థం చేసుకోవడానికి మాకు సహాయపడుతుంది. ఉదాహరణకు, లో సిగ్నల్ ప్రాసెసింగ్ , మనం ఉపయోగించవచ్చు FFT అవాంఛిత శబ్దాన్ని ఫిల్టర్ చేయడానికి లేదా నిర్దిష్ట నమూనాలను గుర్తించడానికి. లో ఆడియో విశ్లేషణ , మేము వివిధ శబ్దాలను గుర్తించవచ్చు లేదా ఆడియో రికార్డింగ్ నాణ్యతను విశ్లేషించవచ్చు. లో బొమ్మ లేదా చిత్రం సరి చేయడం , FFT ఇమేజ్లోని స్పేషియల్ ఫ్రీక్వెన్సీలను విశ్లేషించడంలో మాకు సహాయపడుతుంది. మరియు టెలికమ్యూనికేషన్స్లో, FFT సిగ్నల్లను ప్రభావవంతంగా ప్రసారం చేయడానికి మరియు స్వీకరించడానికి ఉపయోగించబడుతుంది.
MATLABలో FFTని ఎలా ఉపయోగించాలి
MATLAB అనే అంతర్నిర్మిత ఫంక్షన్ని అందిస్తుంది fft అది మాకు నిర్వహించడానికి అనుమతిస్తుంది ఫాస్ట్ ఫోరియర్ ట్రాన్స్ఫార్మ్ (FFT) సంకేతాలపై గణనలు. ఈ ఫంక్షన్ ఉపయోగించడానికి సులభమైనది మరియు ఫ్రీక్వెన్సీ డొమైన్లో సిగ్నల్లను విశ్లేషించడానికి మరియు మార్చడానికి వివిధ ఎంపికలను అందిస్తుంది:
ఉపయోగించడానికి వాక్యనిర్మాణం FFT MATLABలోని విధులు క్రింద ఇవ్వబడ్డాయి:
F = fft ( x )F = fft ( x,n )
F = fft ( x,n, dim )
ఇక్కడ:
F= fft(x) యొక్క గణనను అందిస్తుంది డిస్క్రీట్ ఫోరియర్ ట్రాన్స్ఫార్మ్ (DFT) x ఉపయోగించి ఫాస్ట్ ఫోరియర్ ట్రాన్స్ఫార్మ్ (FFT) అల్గోరిథం.
- x వెక్టర్ను సూచిస్తే, fft(x) వెక్టర్ యొక్క ఫోరియర్ పరివర్తనను అందిస్తుంది.
- x మాతృకను సూచిస్తే, fft(x) ప్రతి నిలువు వరుసను వెక్టర్గా పరిగణించడం ద్వారా ప్రతి నిలువు వరుస యొక్క ఫోరియర్ పరివర్తనను అందిస్తుంది.
F = fft(x,n) n-పాయింట్ DFTని ఇస్తుంది. F విలువ అందించనప్పుడు x వలె ఒకే పరిమాణాన్ని కలిగి ఉంటుంది.
- x అనేది వెక్టార్ మరియు దాని పొడవు n కంటే తక్కువగా ఉంటే, అది n చేరే వరకు x వెనుక సున్నాలతో ప్యాడింగ్ పొందుతుంది.
- x అనేది వెక్టార్ మరియు దాని పొడవు n కంటే ఎక్కువగా ఉంటే, అది ఆ పొడవు nకి కత్తిరించబడుతుంది.
- x మాతృక అయితే, ప్రతి నిలువు వరుస వెక్టర్ కేస్గా పరిగణించబడుతుంది.
F = fft(x,n,dim) ఇచ్చిన డైమెన్షన్ డిమ్తో పాటు ఫోరియర్ ట్రాన్స్ఫార్మ్ని ఇస్తుంది. అనుకుందాం, fft(x, n, 2) x మాతృకను సూచిస్తే ప్రతి అడ్డు వరుసకు n-పాయింట్ ఫోరియర్ పరివర్తనను ఇస్తుంది.
కింది ఉదాహరణలు పనిని వివరిస్తాయి FFT MATLABలో ఫంక్షన్.
ఉదాహరణ 1
మనం ఉపయోగించుకోవచ్చు FFT నిర్దిష్ట ఫ్రీక్వెన్సీ భాగాలు మరియు యాదృచ్ఛిక శబ్దంతో సిగ్నల్ యొక్క ఉత్పత్తి మరియు విశ్లేషణను ప్రదర్శించడానికి MATLABలో.
ఉదాహరణకి:
ls = 2000 ;fs = 1500 ;
ts = 1 / fs;
టీవీ = ( 0 :ls- 1 ) *ts;
f = 0.6 * లేకుండా ( 2 * పై * యాభై * టీవీ ) + 3 * రాండ్న్ ( పరిమాణం ( టీవీ ) ) + లేకుండా ( 2 * పై * 120 * టీవీ ) ;
ప్లాట్లు ( 1000 * టీవీ ( 1 : యాభై ) ,f ( 1 : యాభై ) )
xlabel ( 'టీవీ (ఎంఎస్)' )
ylabel ( 'f(tv)' )
శీర్షిక ( 'జీరో-మీన్ యాదృచ్ఛిక శబ్దం కలిగిన పాడైన సిగ్నల్' )
F = fft ( f ) ;
PS2 = abs ( F/ ls ) ;
PS1 = PS2 ( 1 : ls / 2 + 1 ) ;
PS1 ( 2 : ముగింపు- 1 ) = 2 *PS1 ( 2 : ముగింపు- 1 ) ;
f = fs* ( 0 : ( ls / 2 ) ) / ls ;
ప్లాట్లు ( f, PS1 )
శీర్షిక ( 'f(t) కోసం యాంప్లిట్యూడ్ స్పెక్ట్రమ్ (సింగిల్-సైడ్) PS1' )
xlabel ( 'f(Hz)' )
ylabel ( '|PS1(f)|' )
అందించిన కోడ్ పొడవుతో సిగ్నల్ను ఉత్పత్తి చేస్తుంది 2000 నమూనాలు (ల) , ఒక నమూనా ఫ్రీక్వెన్సీ 1500 Hz (fs) , మరియు ఎ నమూనా కాలం (ts) . ది టైమ్ వెక్టర్ (టీవీ) ఈ పారామితుల ఆధారంగా సృష్టించబడుతుంది. సిగ్నల్ f సున్నా-సగటు యాదృచ్ఛిక శబ్దంతో పాటు 50 Hz మరియు 120 Hz వద్ద సైనూసోయిడల్ భాగాల కలయికతో కూడి ఉంటుంది. ఇది మొదటి 50 నమూనాల సెగ్మెంట్తో ప్లాట్ చేయబడింది. కోడ్ మరింతగా గణిస్తుంది FFT సిగ్నల్ యొక్క మరియు లెక్కిస్తుంది వ్యాప్తి స్పెక్ట్రం (PS1) . చివరగా, వ్యాప్తి స్పెక్ట్రం Hzలోని సంబంధిత పౌనఃపున్యాలకు (f) వ్యతిరేకంగా ప్లాట్ చేయబడింది.
ఉదాహరణ 2
ఉపయోగించే మరొక ఉదాహరణ ఇక్కడ ఉంది FFT ఫ్రీక్వెన్సీ డొమైన్కు టైమ్ డొమైన్ ద్వారా గాస్సియన్ పల్స్ రూపాంతరం కోసం MATLABలో ఫంక్షన్.
fs = 500 ;ts = - 0.5 : 1 /fs: 0.5 ;
ls = పొడవు ( ts ) ;
f = 1 / ( 4 * చ ( 2 * పై * 0.02 ) ) * ( ఎక్స్ ( -ts.^ 2 / ( 2 * 0.02 ) ) ) ;
ప్లాట్లు ( ts,f )
xlabel ( 'సమయం (టి)' )
ylabel ( 'f(t)' )
శీర్షిక ( 'టైమ్ డొమైన్' )
ఉదా = 2 ^ తదుపరి 2 ( ls ) ;
f = fs* ( 0 : ( ఉదా/ 2 ) ) / ఉదా;
F = fft ( f,np ) ;
PF = abs ( F/np ) ;
ప్లాట్లు ( f,PF ( 1 :ఉదా. 2 + 1 ) )
xlabel ( '(ఎఫ్)' )
ylabel ( '|PF(f)|' )
శీర్షిక ( 'ఫ్రీక్వెన్సీ డొమైన్' )
అందించిన కోడ్ టైమ్ డొమైన్లో గాస్సియన్ పల్స్ సిగ్నల్ను ఉత్పత్తి చేస్తుంది మరియు దాని ఫ్రీక్వెన్సీ కంటెంట్ను ఉపయోగించి విశ్లేషిస్తుంది ఫాస్ట్ ఫోరియర్ ట్రాన్స్ఫార్మ్ (FFT) MATLABలో. టైమ్ డొమైన్ సిగ్నల్ ప్లాట్ చేయబడింది, ఆపై ది FFT ఫ్రీక్వెన్సీ డొమైన్ ప్రాతినిధ్యాన్ని పొందేందుకు నిర్వహించబడుతుంది. ఫలితంగా వ్యాప్తి స్పెక్ట్రం సంబంధిత పౌనఃపున్యాలకు వ్యతిరేకంగా పన్నాగం చేయబడింది.
ఉదాహరణ 3
కింది ఉదాహరణ వేర్వేరు పౌనఃపున్యాలతో మూడు సైనూసోయిడల్ సిగ్నల్లను ఉత్పత్తి చేస్తుంది మరియు వాటిని ఉపయోగించి టైమ్ డొమైన్లో ప్లాట్ చేస్తుంది FFT MATLABలో ఫంక్షన్.
fs = 2500 ;ts = 1 / fs;
ls = 3000 ;
t = ( 0 :ls- 1 ) *ts;
r1 = లేకుండా ( 3 * పై * 60 *t ) ;
r2 = లేకుండా ( 3 * పై * 140 *t ) ;
r3 = లేకుండా ( 3 * పై * 350 *t ) ;
f = [ r1; r2; r3 ] ;
కోసం k = 1 : 3
ఉపకథ ( 3 , 1 ,కె )
ప్లాట్లు ( t ( 1 : 250 ) ,f ( k, 1 : 250 ) )
శీర్షిక ( [ 'వరుస సంఖ్య' , num2str ( కె ) , '(టైమ్ డొమైన్)' ] )
ముగింపు
ఉదా = 2 ^ తదుపరి 2 ( ls ) ;
d = 2 ;
F = fft ( f,np,d ) ;
PS2 = abs ( F/ ls ) ;
PS1 = PS2 ( :, 1 :ఉదా. 2 + 1 ) ;
PS1 ( :, 2 : ముగింపు- 1 ) = 2 *PS1 ( :, 2 : ముగింపు- 1 ) ;
కోసం k= 1 : 3
ఉపకథ ( 3 , 1 ,కె )
ప్లాట్లు ( 0 : ( fs/np ) : ( fs/ 2 -fs/np ) ,PS1 ( k, 1 :ఉదా. 2 ) )
శీర్షిక ( [ 'వరుస సంఖ్య' , num2str ( కె ) , '(ఫ్రీక్వెన్సీ డొమైన్)' ] )
ముగింపు
పై కోడ్లో, టైమ్ డొమైన్లోని అవుట్పుట్ విండోలో మూడు సైనూసోయిడల్ వేవ్లు, r1, r2 మరియు r3 ప్రదర్శించబడతాయి. ఫ్రీక్వెన్సీ డొమైన్ సిగ్నల్ 'PS1' అనేది FFT ఫంక్షన్ని ఉపయోగించి తరంగాలకు వాటి ఒక్కొక్క సింగిల్-సైడ్ యాంప్లిట్యూడ్ స్పెక్ట్రాను గణించడం ద్వారా సృష్టించబడుతుంది.
ముగింపు
ది FFT సిగ్నల్లను వాటి ఫ్రీక్వెన్సీ కంటెంట్ను విశ్లేషించడం ద్వారా విభిన్నంగా అర్థం చేసుకోవడంలో మాకు సహాయపడే విలువైన సాధనం. MATLAB యొక్క అంతర్నిర్మిత ఫంక్షన్తో, fft, పనితీరు FFT సంకేతాలపై గణనలు సౌకర్యవంతంగా ఉంటాయి. టైమ్ డొమైన్ నుండి ఫ్రీక్వెన్సీ డొమైన్కు డేటాను మార్చడం ద్వారా వివిధ పౌనఃపున్యాల గురించి మరియు ఆ పౌనఃపున్యాల సంబంధిత తీవ్రతల గురించి కీలకమైన వివరాలను తెలుసుకోవడానికి ఈ ఫంక్షన్ మాకు సహాయం చేస్తుంది. సిగ్నల్ లక్షణాలపై లోతైన అవగాహన పొందడానికి మరియు వివిధ అప్లికేషన్లలో సమాచారంతో కూడిన నిర్ణయాలు తీసుకోవడానికి పై గైడ్ కీలకం.