! ************************************************ ! ** Autor: Steffen Kernbach ** ! ** ANSYS-Version: 7.1 ** ! ** Datum: 04.02.2004 ** ! ************************************************ ! ! Skript zur rechnerischen Ermittlung der Fourierkoeffizienten ! eines Testsignals ! ! ! -------------------------- ! | Analysesignal einlesen | ! -------------------------- ! Signal ins AV kopieren anzz=181 ! Zeilenanzahl des des zu untersuchenden Signals fact=10 ! Abtastfaktor fuer interpoliertes Signal *dim,signal,table,anzz,1,,time *tread,signal,Testsignal,txt *dim,wink_org,table,anzz,1 *dim,curvi_org,table,anzz,1 *dim,curvo_org,table,anzz,1 *dim,curvres_org,table,anzz,2 *dim,wink_int,table,fact*anzz-(fact-1),1 *dim,curvi_int,table,fact*anzz-(fact-1),1 *dim,curvo_int,table,fact*anzz-(fact-1),1 *dim,curvres_int,table,fact*anzz-(fact-1),2 *voper,wink_org(1,1),signal(1,0),mult,1.0 *voper,curvi_org(1,1),signal(1,1),mult,1.0 *vfill,wink_int(1,1),ramp,0,360/(fact*anzz-fact) *do,loop,1,fact*anzz-(fact-1),1 curvi_int(loop,1)=signal((loop-1)*360/(fact*anzz-fact)) *enddo ! ------------------- ! | Fourier-Analyse | ! ------------------- x='int' ! Originaldaten(org)/interpolierte Daten(int) n=89 ! Number of Fourier-Coefficients to be calculated *dim,nmod_%x%,array,2*n+1 ! Oberschwingungen *dim,isym_%x%,array,2*n+1 ! Sin/Cos-Koeffizient *dim,coeff_%x%,array,2*n+1 ! Koeffizienten *do,loop1,1,n,1 *vfill,nmod_%x%(2*loop1),ramp,loop1 ! Modes 1-n fuer sin- und cos-Werte *vfill,isym_%x%(2*loop1),data,-1,1 ! Abwechselnd sin- und cos-Werte berechnen *enddo ! Berechnung der Koeffizienten *mfouri,fit,coeff_%x%(1),nmod_%x%(1),isym_%x%(1),wink_%x%(1),curvi_%x%(1) ! Berechnung der angenaeherten Funktion aus den Koeffizienten *mfouri,eval,coeff_%x%(1),nmod_%x%(1),isym_%x%(1),wink_%x%(1),curvo_%x%(1) ! Ergebnisarray erstellen *dim,erg_%x%,array,n,4 *vfill,erg_%x%(1,1),ramp,1,1 *do,loop1,1,n,1 erg_%x%(loop1,2)=coeff_%x%(loop1*2,1) erg_%x%(loop1,3)=coeff_%x%(loop1*2+1,1) erg_%x%(loop1,4)=sqrt(erg_%x%(loop1,2)**2+erg_%x%(loop1,3)**2) *enddo ! Plotten von Eingangssignal (curvi) und angenaeherter Funktion (curvo) *voper,curvres_%x%(1,1),curvi_%x%(1),mult,1.0 *voper,curvres_%x%(1,2),curvo_%x%(1),mult,1.0 /title,Fourier_Testsignal_%x% /plopts,info,off /gthk,curve,1 /yrange,-0.5,1.5 /xrange,0,360 /axlab,y,Fkt /gcolumn,1,curvi_%x% /gcolumn,2,curvo_%x% /gropt,curl,0 *vplot,wink_%x%(1),curvres_%x%(1,1),2 jpg /yrange /xrange ! Amplitudenspektrum als Balkendiagramm plotten /plopts,info,off /gcolumn,1,Spektrum_%x% /color,curve,red /axlab,y,Amplitude /xrange,0,n+1 /gropt,fill,on /gropt,divx,18 /gropt,dig1,6 /gropt,dig2,0 /gropt,curl,0 *vplot,erg_%x%(1,1),erg_%x%(1,4) !jpg /gropt,fill,off /color,curve ! ------------------------------------------------------ ! Amplitudenspektrum im Vergleich *dim,ergges,array,n,3 *voper,ergges(1,1),erg_org(1,1),mult,1.0 *voper,ergges(1,2),erg_org(1,4),mult,1.0 *voper,ergges(1,3),erg_int(1,4),mult,1.0 /plopts,info,off /title,Spektrum_Vgl /gcolumn,1,org /gcolumn,2,int !/color,curve,red /axlab,y,Amplitude /xrange,0,n+1 /gropt,fill,on /gropt,divx,18 /gropt,dig1,6 /gropt,dig2,0 /gropt,curl,0 *vplot,ergges(1,1),ergges(1,2),3 !jpg /gropt,fill,off /color,curve