專利名稱:用于確定非相干抽樣數(shù)據(jù)的功率頻譜的低泄露技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子裝置測試設(shè)備和方法,具體涉及用于從電子測試信號中抽出測試信號頻率分量的幅度的技術(shù)。
眾所周知,每當(dāng)抽樣時鐘與抽樣信號不“相干”時,被稱為“泄漏”的誤差就會顯現(xiàn)在由DFT生成的功率頻譜中。如果抽樣時鐘的頻率是抽樣信號內(nèi)存在的各頻率的精確整倍數(shù),則抽樣時鐘是“相干的”。泄漏是對截斷頻率,即在抽樣窗口內(nèi)未完成整個循環(huán)的頻率執(zhí)行DFT的數(shù)學(xué)推論。隨著譜線的誤展寬、假波峰和假波谷(凸起部)的生成、以及功率頻譜噪聲最低限度的一般升高,會觀察到泄漏。
已設(shè)計了多種方法來減少泄漏。一種方法是增加抽樣速度。一般來說,抽樣速度越高,感興趣頻率范圍內(nèi)的截斷量就越小,泄漏誤差就越小。該方法盡管有效,然而增加抽樣速度來減少泄漏僅與這種增加的幅度成正比。而且該方法往往會大幅增加所用抽樣設(shè)備的成本。
用于減少泄漏的另一常用技術(shù)是用開窗口函數(shù)來乘以抽樣的數(shù)據(jù)序列。窗口函數(shù)具有使抽樣數(shù)據(jù)序列圍繞其端點遞減的效果,從而消除會引起泄漏誤差的不連續(xù)性。可使用不同的窗口函數(shù),例如,Blackman,Hanning,或Hamming窗口函數(shù),每種函數(shù)均具有其自身具體特性。窗口函數(shù)往往會減少與功率頻譜中的波峰相隔一定距離的泄漏偏差,但也往往會生成較寬波峰。這樣,這些窗口函數(shù)具有重新分配泄漏而不是完全消除泄漏的效果。而且,由于窗口函數(shù)實際改變執(zhí)行DFT的數(shù)據(jù),因而這些窗口函數(shù)往往會使頻譜略微失真。
還有一種技術(shù)是按照與抽樣信號頻率相干的抽樣速度對波形數(shù)據(jù)“重新抽樣”。重新抽樣工作是通過在按照某一速度抽樣的實際點之間進行插值來實現(xiàn)的,以便在數(shù)學(xué)上構(gòu)建一系列點,該一系列點看起來已按照某一不同速度進行抽樣。盡管重新抽樣對于減少泄漏會極其有效,然而它的計算工作量大,并且其精度會受到插值誤差的影響。
還有一種減少泄漏的技術(shù)是改變抽樣時鐘速度,以使該速度與在抽樣信號中發(fā)現(xiàn)的各頻率的整倍數(shù)精確相等。該技術(shù)雖極其有效,但需要價格昂貴的硬件。當(dāng)測試儀包括大量抽樣時鐘時,該方案尤其價格昂貴,而情況經(jīng)常是這樣。
自動測試設(shè)備(ATE或“測試儀”)的制造商一般通過提供價格不貴的常規(guī)測試問題解決方案來力圖改善其產(chǎn)品。通過增加測試儀性能,同時降低測試儀成本,可獲益匪淺。為此,目前強烈要求提供一種價格低廉的技術(shù)來減少由自動測試系統(tǒng)抽樣的信號頻譜中的泄漏。
為了實現(xiàn)上述目的以及其他目的和優(yōu)點,提供了一種用于對抽樣波形頻率含量進行分析的技術(shù),該技術(shù)包括對預(yù)計在抽樣波形中將要求發(fā)現(xiàn)的N個頻率的列表進行匯編。假定抽樣波形與一波形模型一致,而該波形模型在數(shù)學(xué)上與N個正弦波之和對應(yīng)。N個正弦波中的各方均具有未知幅度和相位,并具有一頻率,該頻率與頻率列表中的N個頻率中的一不同頻率相等。該技術(shù)可求出使模型與抽樣數(shù)據(jù)最佳擬合的未知幅度和/或相位。
根據(jù)一個說明性實施例,當(dāng)抽樣的波形頻率事先未知時,也可使用上述技術(shù)。根據(jù)該變形例,可對抽樣波形進行傅里葉變換計算,以生成常規(guī)(rough)功率頻譜。對該常規(guī)功率頻譜中的波峰進行識別,并對其頻率進行編譯,以形成N個頻率的列表。在對N個頻率列表進行編譯時,可考慮其他因素,例如,向從中獲得抽樣數(shù)據(jù)的裝置施加的已知激勵,以及其他伴隨情況。然后,對生成的N個頻率列表實施上述技術(shù),以確定N個正弦波中的各方的精確幅度和/或相位。
主計算機一般把由數(shù)字化儀116獲得的抽樣數(shù)據(jù)存儲在存儲器內(nèi)進行分析。測試程序,或者可用于測試程序的軟件例行程序可對存儲的抽樣數(shù)據(jù)進行操作,以分析該抽樣數(shù)據(jù)內(nèi)容。常規(guī)上,測試程序?qū)⒁龑?dǎo)測試儀軟件對抽樣的數(shù)據(jù)進行離散傅里葉變換(DFT)。然后,測試程序?qū)FT的結(jié)果進行測試。
圖2示出了根據(jù)本發(fā)明的用于在ATE環(huán)境中對測試信號進行抽樣和分析的一般處理。在步驟210,自動測試系統(tǒng)110向DUT 120的輸入施加激勵。
在步驟212,訪問N個頻率列表。該N個頻率表示幅度和/或相位信息期望是已知的抽樣波形的頻率。數(shù)字N可以是任何正整數(shù)。并不是所有的N個頻率都實際需要存在于抽樣波形中。實際上,該技術(shù)可用于測定任何具體頻率分量的有無。優(yōu)選地是,該N個頻率列表事先是已知的,并存儲在測試程序內(nèi)。
在步驟214,對抽樣波形進行計算機建模。表示抽樣波形的該計算機模型由總計的N個正弦波構(gòu)成,以近似于實際抽樣波形。該N個正弦波中的每個均采用以下公式Aksin(ωki)+Bkcos(ωki)(公式1)式中· “Ak”和“Bk”是未知系數(shù),· “k”是范圍從1到N的指數(shù),并表示N個頻率分量中的一個,· ωk表示第k頻率分量(具體地說,ωk=2πFk,式中,F(xiàn)k是第k頻率),以及· “i”是識別具體抽樣并表示時間的指數(shù)。
盡管公式1看起來是兩個正弦波之和,然而公式1在數(shù)學(xué)上等于單個正弦波,該正弦波的頻率等于ωk/2π,幅度等于A2k+B2k]]>,相位等于Bk和Ak的2自變量反正切。
假定公式1表示抽樣波形中的N個正弦波中的每個,則整個抽樣波形可使用以下公式來建模Σk=1N(Akcosωki+Bksinωki)]]>(公式2)在步驟216,對公式2的波形模型進行計算機處理,以獲得在模型和實際抽樣波形之間的最佳擬合。優(yōu)選實施例采用線性最小二乘方技術(shù),以使模型與數(shù)據(jù)擬合。特別是,步驟216試圖使以下最小二乘方估計量最小Σi=0M[yi-Σk=1N(Akcosωki+Bksinωki)]2]]>(公式3)式中,yi是抽樣波形的第i抽樣點,并且i的范圍從0到M,其中,M表示抽樣波形中的抽樣總數(shù)。
為了最小化公式3,該技術(shù)認識到,當(dāng)公式3的偏導(dǎo)數(shù)等于零時,即當(dāng)根據(jù)Ak和Bk的各值獲得公式3的偏導(dǎo)數(shù)時,可實現(xiàn)最佳擬合。由于N個頻率中的每個均存在Ak和Bk的值,因而根據(jù)這些Ak和Bk的各值獲得公式3的偏導(dǎo)數(shù),可生成2N方程組。Σi=0Myicosωji=Σk=1N(AkΣi=0Mcosωkicosωji+BkΣi=0Msinωkicosωji)]]>(公式4)Σi=0Myisinωji=Σk=1N(AkΣi=0Mcosωkisinωji+BkΣi=0Msinωkisinωji)]]>(公式5)式中,當(dāng)“j”指數(shù)的范圍從1到N時,公式4和公式5均重復(fù)N次。定義以下系數(shù)可簡化說明令cckj=Σi=0Mcosωkicosωji]]>(公式6)
令sckj=Σi=0Msinωkicosωji]]>(公式7)令cskj=Σi=0Mcosωkisinωji]]>(公式8)令sskj=Σi=0Msinωkisinωji]]>(公式9)這些系數(shù)可在數(shù)學(xué)上簡化是通過認識到以下公式cckj=(Σi=0Mcos(ωk+ωj)i+Σi=0Mcos(ωk-ωj)i)/2]]>sckj=cskj=(Σi=0Msin(ωk+ωj)i+Σi=0Msin(ωk-ωj)i)/2]]>sskj=(Σi=0Mcos(ωk+ωj)i-Σi=0Mcos(ωk-ωj)i)/2]]>以及Σi=0Mcosαi=(cosα(N-1)-cosαN-cosα+1)/2(1-cosα)]]>和Σi=0Msinαi=(sinα(N-1)-sinαN+sinα)/2(1-cosα)]]>式中,α是ω的任何任意值。
使用在公式6~公式9中定義的系數(shù)來重寫公式4和公式5,可生成以下矩陣 (公式10)通過確定矩陣X的逆矩陣,并把該逆矩陣乘以公式10左側(cè)的矢量V,可解公式10求矢量ab中的Ak和Bk的每個值。
一旦對從1到N的k的每個值的Ak和Bk是已知的,就可通過計算A2k+B2k]]>來確定頻率列表的每個第k個頻率的幅度。通過計算Bk和Ak的2自變量反正切,可確定各相位的值。
通過施加約束,即2N=M+1(頻率數(shù)是抽樣數(shù)的一半),可減輕一些通過解公式10所施加的計算負擔(dān)。通過把該約束放在合適位置,可將公式10的矢量V重寫如下 (公式11)由于施加上述約束會迫使C和X-1成為同一秩(rank)的方形矩陣,因而可把公式10和公式11進行組合以形成ab=(X-1C)y (公式12)這樣,可求出ab,而無須計算V。
建議使用以下方法求出ab· 首先,使用以下遞歸關(guān)系來快速構(gòu)建Ccos(a+1)ωk=2cosωkcosaωk-cos(a-1)ωksin(a+1)ωk=2cosωksinaωk-sin(a-1)ωk· 然后,通過L-U分解,計算X-1;· 把X-1施加于C;· 通過使X-1C乘以y來計算ab。
一旦構(gòu)建了X-1C,計算ab就可大致要求N2倍增累積。
優(yōu)選地是,本文所述技術(shù)是作為軟件庫中的一種函數(shù)來實施的。該函數(shù)優(yōu)選地接收輸入陣列,該輸入陣列存儲頻率列表和所述抽樣數(shù)據(jù)指針。該函數(shù)優(yōu)選地返回包含Ak和Bk各值的陣列,從中可計算幅度和相位?;蛘?,該函數(shù)直接返回幅度和相位。軟件庫優(yōu)選地駐留在自動測試系統(tǒng)上,在該自動測試系統(tǒng)中,可訪問在測試系統(tǒng)中運行的測試程序。
各圖的水平軸表示頻率,具體地說,表示頻率點(Bin)0~63。為了與采用FFT的方法進行直接比較,使用N=64來操作最佳擬合技術(shù),其中,N個頻率中的每個均與FFT點(Bin)對應(yīng)。垂直軸表示以db為單位的幅度。
各圖均示出了從第9頻率點(Bin)即即未進行相干抽樣的頻率點(Bin)的中心略微偏斜的單音調(diào)。特別是,ωk=2π(k-1)(1+ε),式中,對圖4A中ε=10-6,對圖4B為ε=10-9,對圖4C為ε=10-12。這些圖均表明了最佳擬合技術(shù)的強度。與其他技術(shù)相比,最佳擬合技術(shù)可保持極窄波峰,而在波峰周圍沒有升高區(qū)域(“裙部”)。
優(yōu)點所揭示技術(shù)與常規(guī)DFT比起來有許多優(yōu)點,特別是在自動測試設(shè)備方面。使用所述技術(shù),可利用價格較低廉的測試儀電子裝置進行高精度頻譜分析。抽樣時鐘無需與待測定頻率相干,并可大大消除頻譜泄漏。與把頻率分類為寬度有限的各點(Bin)的常規(guī)DFT相比,所揭示技術(shù)不采用頻率點(Bin),而采用離散頻率。這樣,所揭示技術(shù)可按照使用常規(guī)DFT無法實現(xiàn)的方式來分辨間隔極密的頻率。
該技術(shù)還具有可升級的,因為其計算時間隨著N的函數(shù),即待分析頻率數(shù)而變化。這樣,如果僅分析少量頻率,則可較快實施該技術(shù)。此外,由于該技術(shù)采用最佳擬合算法,因而可使用該技術(shù)來確定在抽樣窗口內(nèi)未充分完成一個循環(huán)的頻率分量的幅度和相位。要求事先規(guī)定頻率,一般在自動測試設(shè)備中不會起到不利作用,在該自動測試設(shè)備中,由DUT生成的頻率事先在很大程度上是已知的,并且測試儀生成用于驅(qū)動DUT的激勵。
盡管X-1C需要大量時間來計算,然而每當(dāng)分析波形時,無需對其重新計算。只要頻率列表和抽樣數(shù)M保持恒定,就可通過檢索X-1C的存儲拷貝并將其乘以y,對新獲得的抽樣數(shù)據(jù)進行分析。提供的庫可包括針對不同頻率和抽樣數(shù)的各種不同X-1C組合。用戶可從這些組合中進行選擇,以便對波形進行快速分析。
替代例在對一個實施例作了說明之后,可進行各種替代實施例或變化。
例如,如上所述,在自動測試設(shè)備方面可使用抽樣波形分析技術(shù)。然而,該技術(shù)可更普遍地適用于期望進行頻率信息分析的任何抽樣數(shù)據(jù)。盡管根據(jù)
圖1的具體測試方案對該技術(shù)作了說明,然而該技術(shù)不限于任何具體測試方案。
本文揭示的實施例對使用線性最小二乘方來獲得在波形模型(公式2)和實際抽樣數(shù)據(jù)之間的最佳擬合作了規(guī)定。然而,可使用其他最佳擬合技術(shù),例如,柯西-洛倫茲(Cauchy-Lorentz)分布,以及試圖使模型和抽樣數(shù)據(jù)之差的絕對值最小的技術(shù)。因此,本發(fā)明不限于使用最小二乘方。
此外,本說明還提供了用于處理矩陣和執(zhí)行必要計算的軟件?;蛘撸商峁S糜布娐坊蛱幚砥?,以便更有效地執(zhí)行這些功能。
如上所述,該技術(shù)要求N個頻率列表事先是已知的。然而,可通過對抽樣數(shù)據(jù)進行DFT并檢查結(jié)果來避免該要求。這種變形例如圖3所示。在步驟310,進行DFT。在步驟312,在從DFT得出的功率頻譜中識別波峰。然后,把與波峰對應(yīng)的頻率附加給頻率列表,用于進行更準確的分析。步驟316和318如上所述進行假定抽樣數(shù)據(jù)與模型一致,并且獲得在抽樣和模型之間的最佳擬合。該技術(shù)無需在空白中(vacuum)進行。也可將伴隨情況加以考慮,例如,施加給DUT的激勵頻率,這些頻率的諧波,以及DUT的已知特性。
上述技術(shù)假定按照勻速進行波形抽樣。然而,根據(jù)替代實施例,也可按照非勻速進行波形抽樣。特別是,用“ti”項(即實際抽樣時間)替代上述方程和矩陣中的離散指數(shù)“i”,可實現(xiàn)任意非均勻抽樣。對于非均勻抽樣,可以不使用公式9之后的計算簡化;然而,該變化對所述技術(shù)的其余部分是透明的。
這些替代例和變形例以及其他例等均由本發(fā)明人作了設(shè)想,并用于包含在本發(fā)明的范圍內(nèi)。因此,應(yīng)理解的是,上述說明僅是作為例子,并且本發(fā)明應(yīng)僅由所附權(quán)利要求的精神和范圍來限制。
計算機列表以下提供了用于生成這些圖表的數(shù)據(jù)的測試代碼的軟件列表
<pre listing-type="program-listing"> /* standard header files */ #include <stdio.h> #include <math.h> #include <sys/time.h> #include <image.h> #define N 128 /* Number of samples of original waveform */ #define M 64 /* Number of frequency bins for least-squares fit routine */ #define M2 (2*M) /* Total number of bins(real,and imaginary) */ #define R 32 /* Number of samples to expand by in resampling routine*/ #define F 1024 /* Number of samples infilter in resampling routine*/ double raw_capture[N];/* The original samplas*//* These are used in the resampling routine only */double extended_capture[2*N],/* basically raw_capture[],but with extra samples */ expanded_capture[R*N],/* this is (hopefully) equivalent to raw_capture[] */ /* but with R times as many samples*/ filter, /* uses a cos^2 filter 1024 points */ resampled_capture[N]; /* this is (hopefully) raw_capture[] but sampled at */ /* the correct rate*/double Mx[M2][M2], /* This corresponds to matrix M */ Mi[M2][M2], /* inverse of matrix M*/ MiC[M2][M2], /* This is the product of M^-1C */ x[M2],xmags[M],xargs[M], /* uncorrected dft-mags and phases (arguments)*/ xw[M2],xwmags[M],xwargs[M],/* uncorrected dft with hamming window*/ xs[M2],xsmags[M],xsargs[M],/* resampled dft */ xp[M2],xpmags[M],xpargs[M];/* least squares dft *//* Computes sum(cos w*i)i=0 to n */double sumcos(w,n)double w;{return w ? 0.5*(cos(w*(n-1))-cos(w*n)-cos(w)+1)/(1-cos(w)n;}/* Computes sum(sin w*i) i=0 to n */double sumsin(w,n)double w;{return w ? 0.5*(sin(w*(n-1))-sin(w*n)+sin(w))/(1-cos(w))0;}/* Makes 1024 point cos^2 filter-used for resampling algorithm *//* This is not used by least squares */make_filter(){int i; for(i=0;i<1024;i++)<dp n="d12"/> filter[i]=(1-cos(2+M_PI*i/1024))/2; } /* 1d interpolation routine-used for resampling algorithm.*/ /* Basically Laqrange’s interpolation */ /* This is not used by least squares */ /* tries to return y[a] given y
...y[n-1] as input */ double interpolate_1d(a,y,n) double a,y[]; int n; {int k,j,xl,xr; double product,sum=0; xl=ftoi(a-2.0); xr=ftoi(a+2.0); xl=xl>=0?xl0; xr=xl<=n?xrn; for(k=xl;k<=xr;k++) {product=y(tǒng)[k]; for(j=xl;j<=xr;j++) if(j?。絢) product*=(a-j)/(k-j); sum+=product; } return sum;}main(){int i,j,k,m; struct timeval tp0,tp1,tp2,tp3; /* Used for timing */ double f0=1.0+0.001e-9; /* Frequency error of 0.001ppb */ gettimeofday(&amp;tp0,NULL); for(i=0;i<N;i++) raw_capture[i]=cos(2*M_PI* 9*f0*i/N); gettimeofday(&amp;tp1,NULL); printf(″Time to construct raw capture%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); for(m=0;m<M;m++) {x[2*m]=x[2*m+1]=0; for(i=0;i<N;i++) {x[2*m]+=raw_capture[i]*cos(2*M_PI*m*i/N); x[2*m+1]+=raw_capture[i]*sin(2*M_PI*m*i/N); }} gettimeofday(&amp;tp1,NULL); printf(″Time to construct %i-point uncorrected dft%6uus\n″,M,diff(tp1,tp0)); for(i=0;i<M;i++) {xmags[i]=hypot(x[2*i+1],x[2*i+0])/M; xargs[i]=180/M_PI*atan2.(x[2*i+1],x[2*i+0]); }/* This section is not least squares fit,but is a crude resampling algorithm */#ifdef R gettimeofday(&amp;tp0,NULL); for(i=0;i<2*N;i++) extended_capture[i]=cos(2*M_PI* 9*f0*(i-N/2)/N); gettimeofday(&amp;tp1,NULL); printf(″Time to construct raw capture(with N/2 padding)%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); make_filter();<dp n="d13"/> gettimeofday(&amp;tp1,NULL); printf(″Time to construct cos^2 filter%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); for(i=0;i<N*R;i++) {int e0=N/2-F/R/2+(i+R-1)/R; expanded_capture[i]=0; for(j=0;j<F/R;j++) {int fi=(N*R-i)%R+j*R; int ej=e0+j; expanded_capture[i]+=filter[fi]*extended_capture[ej]; }} gettimeofday(&amp;tp1,NULL); printf(″Time to expand padded capture%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp1,NULL); for(i=0;i<N;i++) resampled_capture[i]=interpolate_ld(i*R/f0,expanded_capture,N*R); gettimeofday(&amp;tp1,NULL); printf(″Time to resample from expanded capture%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); for(m=0;m<M;m++) {xs[2*m]=xs[2*m+1]=0; for(i=0;i<N;i++) {xs[2*m]+=resampled_capture[i]*cos(2*M_PI*m*i/N); xs[2*m+1]+=resampled_capture[i]*sin(2*M_PI*m*i/N); }} gettimeofday(&amp;tp1,NULL); printf(″Time to construct %i-point resampled dft%6uus\n″,M,diff(tp1,tp0)); for(i=0;i<M;i++) {xsmags[i]=hypot(xs[2*i+1],xs[2*i+0])/M; xsargs[i]=180/M_PI*atan2(xs[2*i+1],xs[2*i+0]); }#endif/* This section is not least squares fit,but instead uses a hanning window */ gettimeofday(&amp;tp0,NULL); for(m=0;m<M;m++) {xw[2*m]=xw[2*m+1]=0; for(i=0;i<N;i++) {xw[2*m]+=raw_capture[i]*cos(2*M_PI*m*i/N)*(1-(1+cos(2*M_PI*i/N))/2); xw[2*m+1]+=raw_capture[i]*sin(2*M_PI*m*i/N)*(1-(1+cos(2*M_PI*i/N))/2); }} gettimeofday(&amp;tp1,NULL); printf(″Time to construct %i-point windowed dft%6uus\n″,M,diff(tp1,tp0)); for(i=0;i<M;i++) {xwmags[i]=hypot(xw[2*i+1],xw[2*i+0])/M; xwargs[i]=180/M_PI*atan2(xw[2*i+1],xw[2*i+0]); } /* The least-squares section */ gettimeofday(&amp;tp0,NULL); for(i=0;i<M;i++) for(j=0;j<M;j++) {Mx[2*i][2*j]=0.5*(sumcos(2*M_PI*(i+j)*f0/N,N)+sumcos(2*M_PI*(i-j)*f0/N,N)); Mx[2*i][2*j+1]=0.5*(sumsin(2*M_PI*(i+j)*f0/N,N)-sumsin(2*M_PI*(i-j)*f0/N,N)); Mx[2*i+1][2*j]=0.5*(sumsin(2*M_PI*(i+j)*f0/N,N)+sumsin(2*M_PI*(i-j)*f0/N,N)); Mx[2*i+1][2*j+1]=0.5*(-sumcos(2*M_PI*(i+j)*f0/N,N)+sumcos(2*M_PI*(i-j)*f0/N,N)); }Mx[1][1]=Mx
;/* fix that nasty problem with sin */gettimeofday(&amp;tp1,NULL);printf(″Time to construct matrix%6uus/n″,diff(tp1,tp0));<dp n="d14"/> gettimeofday(&amp;tp0,NULL); invert2M( ); gettimeofday(&amp;tp1,NULL); printf(″Time to invert matrix%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); for(i=0;i<M2;i++) for(j=0;j<M2;j++) {MiC[i][j]=0.0; for(k=0;k<M;k++) MiC[i][j]+=Mi[i][2*k]*cos(2*M_PI*k*f0*j/N)+ Mi[i][2*k+1]*sin(2*M_PI*k*f0*j/N); } gettimeofday(&amp;tp1,NULL); printf(″Time to construct composite matrix%6uus\n″,diff(tp1,tp0)); gettimeofday(&amp;tp0,NULL); for(i=0;i<M2;i++) {xp[i]=0; for(j=0;j<M2;j++) xp[i]+=MiC[i][j]*raw_capture[j]; } gettimeofday(&amp;tp1,NULL); printf(″Time to multiply composite matrix on result%6uus\n″,diff(tp1,tp0)); for(i=0;i<M;i++) {xpmags[i]=hypot(xp[2*i+1],xp[2*i+0]); xpargs[i]=180/M_PI*atan2(xp[2*i+1],xp[2*i+0]);}}/* These matrix inversion routines should be replaced by L-U decomposition *//* These unfortunately use a crude Gauss-Jordon algorithm with no pivoting */initMi( ){int i,j; for(i=0;i<M2;i++) for(j=0;j<M2;j++) Mi[i][j]=i==j(luò);}invert2M( ){int i,j; initMi( ); for(i=0;i<M2;i++) {divrow(i,Mx[i][i]); for(j=i+1;j<M2;j++) if(Mx[j][i]) {divrow(j,Mx[j][i]); decrow(j,i); } } for(i=M2-1;i;i--) for(j=i-1;j>=0;j--) submultdrow(j,Mx[j][i],i);}divrow(i,denom)int i;float denom;{int k; for(k=0;k<M2;k++) {Mx[i][k]/=denom; Mi[i][k]/=denom;}}<dp n="d15"/>decrow(i,j)int i,j;{int k; for(k=0;k<M2;k++) [Mx[i][k]-=Mx[j][k]; Mi[i][k]-=Mi[j][k];}}submultdrow(i,factor,j)int i,j;float factor;{int k; for(k=0;k<M2;k++) {Mx[i][k]-=factor*Mx[j][k]; Mi[i][k]-=factor*Mi[j][k];}}/* returns the difference in microseconds between two timeval structures. */diff(tp1,tp0)struct timeval tp0,tp1;{return(tp1.tv_sec-tp0,tv_sec)*1000000+tp1.tv_usec-tp0,tv_usec;}/* this makes an ascii file which can be cut and pasted into spreadsheet */write out data_for_msexcel(filename)char *filename;{int i; FILE *fp; fp=fopen(filename,″w″); if(fp) {for(i=0;i<M;i++) fprintf(fp,″%4.3f\t%4.3f\t%4.3f\t%4.3f%c\n″, 20*log10(xmags[i]), 20*log10(xwmags[i]), 20*log10(xsmags[i]), 20*log10(xpmags[i]), 13); fclose(fp);}else{fprintf(stderr,″Could not open output file.\n″); perror(filename);}}</pre>
權(quán)利要求
1.一種用于對抽樣信號頻率分量進行分析的方法,該方法包括以下步驟(A)生成想要在抽樣信號內(nèi)進行分析的N個不同頻率分量的列表,N>1,其中,N個頻率分量中的每個頻率是已知的,并且幅度和相位是未知的;(B)對抽樣信號進行建模,作為與N個正弦波之和對應(yīng)的波形模型,N個正弦波中的每個也具有未知幅度和相位,并具有一頻率,該頻率與多個N個頻率分量中的一個頻率相等;以及(C)對波形模型進行處理,以使波形模型與抽樣信號最佳擬合。
2.根據(jù)權(quán)利要求1所述的方法,其中,對波形模型進行計算機處理的步驟C采用最小二乘方算法,用于使波形模型與抽樣信號擬合。
3.根據(jù)權(quán)利要求2所述的方法,其中,N個正弦波中的每個均可采用公式Aksinωki+Bkcosωki來表示,式中,“Ak”和“Bk”是未知系數(shù),“k”是范圍從1到N的指數(shù),并表示N個頻率分量中的一個,ωk對應(yīng)于第k頻率分量,以及“i”是識別具體抽樣并表示時間的指數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,其中,對波形模型進行處理的步驟C使估計量最小,該估計量可表示為Σi=0M[yi-Σk=1N(Akcosωki+Bksinωki)]2]]>式中,“M”表示構(gòu)成抽樣波形的抽樣數(shù),以及“yi”表示在抽樣波形情況下的第i點。
5.根據(jù)權(quán)利要求1所述的方法,該方法進一步包括求出N個頻率分量的未知幅度和相位中的至少一個。
6.根據(jù)權(quán)利要求5所述的方法,其中,N個頻率分量的各第k頻率分量的幅度可表示為A2k+B2k]]>
7.根據(jù)權(quán)利要求5所述的方法,其中,N個頻率分量的各第k頻率分量的相位可表示為Bk和Ak的2自變量反正切。
8.一種在自動測試系統(tǒng)中對在測設(shè)備進行測試的方法,該方法包括以下步驟(A)把激勵信號施加給在測設(shè)備;(B)從在測設(shè)備中進行響應(yīng)信號抽樣;(C)生成想要在抽樣響應(yīng)信號內(nèi)進行分析的N不同頻率分量的列表,N>1,其中,N個頻率分量中的各方的頻率是已知的,并且幅度和相位是未知的;(D)對抽樣信號進行計算機建模,作為與N個正弦波之和對應(yīng)的波形模型,N個正弦波中的每個也具有未知幅度和相位,并具有一頻率,該頻率與多個N頻率分量中的一個不同頻率相等;(E)對波形模型進行計算機處理,以使波形模型與抽樣信號最佳擬合;以及(F)求出N頻率分量的未知幅度和相位中的至少一方。
9.根據(jù)權(quán)利要求8所述的方法,其中,該設(shè)備是作為其制造工藝的一部分而測試的,用于確保其在裝運前的質(zhì)量。
10.根據(jù)權(quán)利要求8所述的方法,其中,生成N個不同頻率分量的列表的步驟C包括向施加給在測設(shè)備的激勵信號的頻率提供N個頻率分量列表。
11.根據(jù)權(quán)利要求10所述的方法,該方法進一步包括向施加給在測設(shè)備的激勵信號的頻率的諧波提供N頻率分量列表。
12.根據(jù)權(quán)利要求8所述的方法,其中,生成N個不同頻率分量列表的步驟C包括對抽樣的響應(yīng)信號進行離散傅里葉變換(DFT);識別DFT中的波峰;以及把與DFT中的波峰基本相等的頻率附加給N個頻率分量列表。
13.在自動測試系統(tǒng)中,一種用于對測試信號頻率含量進行分析的設(shè)備,該設(shè)備包括數(shù)字化儀,用于從在測設(shè)備中進行測試信號抽樣;存儲器,用于存儲想要在抽樣信號內(nèi)進行分析的N個不同頻率分量的列表,N>1,其中,N個頻率分量中的每個頻率是已知的,并且幅度和相位是未知的;計算機建模軟件,用于對抽樣信號進行計算機建模,作為與N個正弦波之和對應(yīng)的波形模型,N個正弦波中的每個也具有未知幅度和相位,并具有一頻率,該頻率與多個N頻率分量中的一個不同頻率相等;以及計算機處理軟件,用于對波形模型進行計算機處理,以使波形模型與抽樣信號最佳擬合。
14.根據(jù)權(quán)利要求13所述的設(shè)備,進一步包括測試程序,該測試程序在自動測試系統(tǒng)上運行,并在N頻率列表中規(guī)定頻率。
15.根據(jù)權(quán)利要求13所述的設(shè)備,其中,計算機建模軟件和計算機處理軟件駐留在軟件庫內(nèi),該軟件庫由不同測試程序來訪問,用于分析抽樣的波形。
16.根據(jù)權(quán)利要求13所述的設(shè)備,其中,計算機處理軟件采用最小二乘方算法,用于使波形模型與抽樣響應(yīng)信號擬合。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中,N個正弦波中的每個均可采用公式Aksinωki+Bkcosωki來表示,式中,“Ak”和“Bk”是未知系數(shù),“k”是范圍從1到N的指數(shù),并表示N頻率分量中的一個,ωk對應(yīng)第k頻率分量,以及“i”是表示時間的指數(shù)。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中,計算機處理軟件使估計量最小,該估計量可表示為Σi=0M[yi-Σk=1N(Akcosωki+Bksinωki)]2]]>式中,“M”表示構(gòu)成抽樣波形的抽樣數(shù),以及“yi”表示在抽樣波形情況下的第i點。
19.在自動測試系統(tǒng)中,一種用于對測試信號頻率含量進行分析的設(shè)備,該設(shè)備包括數(shù)字化儀,用于從在測設(shè)備中進行測試信號抽樣;存儲裝置,用于存儲想要在抽樣信號內(nèi)進行分析的N個不同頻率分量的列表,N>1,其中,N個頻率分量中的每個頻率是已知的,并且幅度和相位是未知的;建模裝置,用于對抽樣信號進行建模,作為與N個正弦波之和對應(yīng)的波形模型,N個正弦波中的每個也具有未知幅度和相位,并具有一頻率,該頻率與多個N頻率分量中的一個不同頻率相等;以及處理裝置,用于對波形模型進行處理,以使波形模型與抽樣信號最佳擬合。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其中,建模裝置和處理裝置駐留在軟件庫內(nèi),該軟件庫由不同測試程序來訪問,用于分析抽樣波形。
21.根據(jù)權(quán)利要求1所述的方法,其中,抽樣信號按照非勻速進行抽樣。
全文摘要
本發(fā)明提供了一種技術(shù),用于對從自動測試系統(tǒng)中抽樣的波形的頻率分量的幅度進行確定,該技術(shù)包括對預(yù)計在抽樣波形中發(fā)現(xiàn)的N個頻率的列表進行匯編。在測試儀上運行的測試程序通常提供頻率列表。該技術(shù)假定抽樣波形與理想化波形模型一致,而該理想化波形模型在數(shù)學(xué)上與N個正弦波之和對應(yīng)。構(gòu)成該模型的N個正弦波中的每個均具有未知幅度,并具有一頻率,該頻率與頻率列表中的N個頻率中的一個相等。該技術(shù)試圖在數(shù)學(xué)上通過線性最小二乘方算法使模型與實際抽樣波形之差最小,從而求出N頻率中的各方的未知幅度。
文檔編號G01R23/16GK1464979SQ02802241
公開日2003年12月31日 申請日期2002年6月24日 優(yōu)先權(quán)日2001年6月29日
發(fā)明者格雷戈里E·迪翁 申請人:泰拉丁公司