版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
HR數(shù)字濾波器C語(yǔ)言
分類:數(shù)字信號(hào)處理2013-09-1614:042146人閱讀評(píng)論(2)收藏舉報(bào)
目錄(?)[+]
11巴特沃斯濾波器的次數(shù)
12巴特沃斯濾波器的傳遞函數(shù)
13巴特沃斯濾波器的實(shí)現(xiàn)C語(yǔ)言
雙1次z變換
21雙I次z變換的原理
22雙I次z變換的實(shí)現(xiàn)C語(yǔ)言
IIR濾波器的間接設(shè)計(jì)代碼C語(yǔ)言
間接設(shè)計(jì)實(shí)現(xiàn)的HR濾波器的性能
31設(shè)計(jì)指標(biāo)
32程序執(zhí)行結(jié)果
1.模擬濾波器的設(shè)計(jì)
1.1巴特沃斯濾波器的次數(shù)
根據(jù)給定的參數(shù)設(shè)計(jì)模擬漉波器,然后進(jìn)行變數(shù)變換,求取數(shù)字濾波器的方法,稱為
濾波器的間接設(shè)計(jì)。做為數(shù)字濾波器的設(shè)計(jì)基礎(chǔ)的模擬濾波器,稱之為原型濾波器。這里,
我們首先介紹的足最簡(jiǎn)單最基礎(chǔ)的原型濾波微,巴特沃斯低通濾波器。由于IIR濾波器不具
有線性相位特性,因此不必考慮相位特性,直接考慮其振幅特性。
也gl=I1Q=-8---F8
5=jQ.
在這里,N是濾波器的次數(shù),Cc是截止頻率。從上式的振幅特性可以看出,這個(gè)是單
調(diào)遞減的函數(shù),其振幅特性是不存在紋波的。設(shè)計(jì)的時(shí)候,一般需要先計(jì)算跟所需要設(shè)計(jì)參
數(shù)相符合的次數(shù)N。首先,就需要先由阻帶頻率,計(jì)算出阻帶衰減
4=—201。氏。瓦(JQJ
將巴特沃斯低通濾波器的振幅特性,直接帶入上式,則有
.45=-201og10
1+(-1)哈產(chǎn)
最后,可以解得次數(shù)N為
當(dāng)然,這里的N只能為正數(shù),因此,若結(jié)果為小數(shù),則舍棄小數(shù),向上取整。
1.2巴特沃斯濾波器的傳遞函數(shù)
巴特沃斯低通濾波器的傳遞函數(shù),可由其振幅特性的分母多項(xiàng)式求得。其分母多項(xiàng)
1+(“
根據(jù)S解開,可以得到極點(diǎn)。這里,為了方便處理,我們分為兩種情況去解這個(gè)方程。當(dāng)N
為偶數(shù)的時(shí)候,
3.
3萬+1=0,k=0,2,3…,2N-1
這里,使用了歐拉公式。同樣佗,當(dāng)
N為奇數(shù)的時(shí)候,
1—=0
/、2N
—=,履
IQ,
同樣的,這里也使用了歐拉公式。歸納以上,極點(diǎn)的解為
(2k+l'}
Q,expj-------7i,N:evennumber,k=0,l,2,...52N-l
<2N)
(k\
Q,expj-Jr.N:oddnumber*=0.1.2…??2N-1
IN/
上式所求得的極點(diǎn),是在s平面內(nèi),在半徑為Cc的圓上等間距的點(diǎn),其數(shù)量為2N個(gè)。為
了使得其HR濾波器穩(wěn)定,那么,只能選取極點(diǎn)在S平面左半平面的點(diǎn)。選定了穩(wěn)定的極點(diǎn)
之后,其模擬濾波器的傳遞函數(shù)就可由下式求得。
%G)=n—
Re。]<0S~Pk
1.3巴特沃斯濾波器的實(shí)現(xiàn)(C語(yǔ)言)
首先,是次數(shù)的計(jì)算。次數(shù)的計(jì)算,我們可以由下式求得。
_1log10(10^-1)
其對(duì)應(yīng)的C語(yǔ)言程序?yàn)?/p>
[cpp]viewplaincopy
N=Ceil(0.5*(loglO(pow(10,Stopband_attenuation/10)-1)/
log10(Stopband/Cotoff)));
然后是極點(diǎn)的選擇,這里由于涉及到復(fù)數(shù)的操作,我們就聲明一個(gè)復(fù)數(shù)結(jié)構(gòu)體就可
以了。最重要的是,極點(diǎn)的計(jì)算含有自然指數(shù)函數(shù),這點(diǎn)對(duì)于計(jì)算機(jī)來講,不是太方便,所
以,我們將其替換為三角函數(shù),
Ck+(1/2)八.左+(1/2)、TK7c「
Q,cos-----------;r+/C,sni-----------兀、N:evennumber,4=0.1.2,
cNN'
Irjrkr
Q.cos—+sin—,N:oddnumber^=0,L2…2N-1
'N'N?
這樣的話,實(shí)部與虛部就還可以分開來計(jì)算。其代碼實(shí)現(xiàn)為
[cppjviewplaincopy
typedefstruct
(
doubleReal_part;
doubleImag_Part;
}COMPLEX;
COMPLEXpolesfN];
for(k=0;k<=((2*N)-1);k++)
(
if(Cotoff*cos((k+dk)*(pi/N))<0)
{
poles[count].Rcal_part=-Cotoff*cos((k+dk)*(pi/N));
poles[count].Imag_Part=-Cotoff*sin((k+dk)*(pi/N));
count++;
if(count==N)break;
計(jì)算出穩(wěn)定的極點(diǎn)之后,就可以進(jìn)行傳遞函數(shù)的計(jì)算了。傳遞的函數(shù)的計(jì)算,就像下
式一樣
H°G)=n-
S
Re0]<0-Pk
這里,為了得到模擬濾波器的系數(shù),需要將分母乘開。很顯然,這里的極點(diǎn)不-一定是整數(shù),
或者來說,這里的乘開需要做復(fù)數(shù)運(yùn)算。其復(fù)數(shù)的乘法代碼如下,
[cpp]viewplaincopy
intComplex_Multiple(COMPLEXa,COMPLEXb,
double*Res_Real,double*Res_Imag)
(
*(Res_Real)=(a.Real_part)*(b.Real_part)-(a.Imag_Part)*(b.Imag_Part);
*(Res_Imag)=(a.Imag_Part)*(b.Real_part)+(a.Real_part)*(b.Imag_Part);
return(int)l;
有了乘法代碼之后,我們現(xiàn)在簡(jiǎn)單的情況下,看看其如何計(jì)算其濾波器系數(shù)。我們做如下假
設(shè)
N=2,P]=4+%2,。2=b\+a2
這個(gè)時(shí)候,其傳遞函數(shù)為
44XZ
H「G)=-------------------!-------------------
(s-(4+Ja2))($-(4+jb2))
將其乘開,其大致的關(guān)系就像下圖所示一樣。
ReImReIm
a,a、、
?*b:b■
1010
計(jì)算的關(guān)系一目了然,這樣的話,實(shí)現(xiàn)就簡(jiǎn)單多了。高階的情況下也一樣,重復(fù):這種計(jì)算就
可以了。其代碼為
[cpp]viewplaincopy
Res[O].Real_part=poles[0].Real_part;
Res[O].Imag_Part=poles[OJ.Imag_Part;
Resll].Real_part=I;
Res[l].Imag_Part=0;
for(count_l=0;count_l<N-l;count_l++)
(
for(counl=0;count<=count_l+2;count++)
{
if(0==count)
|
Complex_Multiple(Res[count],poles[count_l+l],
&(Res_Savefcount].Real_part),
&(Res_Save[count].lmag_Pan));
)
elseif((count_l+2)==count)
Res_Save[count].Real_part+=Res[count-l].Real_part;
Res_Savc[countJ.Iniag_Part+=Res[count-1].Iniag_Part;
else
(
Complex_Multiple(Res[count],poles[count_l+l],
&(Res_Save[count].Real_part),
&(Res_Save[count].Imag_Part));
1Res_Savelcount].Real_part+=Reslcount-1J.Rcal_part;
Res_Save[countl.Iniag_Part+=Resfcount-1l.Imag_Part;
*(b+N)=*(a+N);
到此,我們就可以得到一個(gè)模擬濾波器巴特沃斯低通濾波器了。
2.雙1次z變換
2.1雙1次z變換的原理
我們?yōu)榱藢⒛M濾波器轉(zhuǎn)換為數(shù)字濾波器的,可以用的方法很多。這里著重說說雙1
次z變換。我們希望通過雙1次z變換,建立一個(gè)s平面到z平面的映射關(guān)系,將模擬漉波
那轉(zhuǎn)換為數(shù)字濾波器。
和之前的例子?樣,我們假設(shè)有如下模擬濾波器的傳遞函數(shù)。
b
H(s)=
(S+Q)
將其做拉普拉斯逆變換,可得到其時(shí)間域內(nèi)的連續(xù)微分方程式,
dv(t)/、7/、
---+=
dt
其中,x⑴表示輸入,y⑴表示輸出。然后我們需要將其離散化,假設(shè)其采樣周期是T,用差
分方程去近似的替代微分方程,可以得到下面結(jié)果
—卜(〃)一+y\y(n)+>'(77-l)]=-[x(n)+x(?7-1)]
然后使用z變換,再將其化簡(jiǎn)??傻玫饺缦陆Y(jié)果
y(z)b
H(z)=H3”(z)
X(z)21-z-1
f1+z-1
從而,我們可以得到了s平面到z平面的映射關(guān)系,即
S=/(N)=匕
T1+Z
由于所有的高階系統(tǒng)都可以視為一階系統(tǒng)的并聯(lián),所以,這個(gè)映射關(guān)系在高階系統(tǒng)中,也是
成立的。
然后,將關(guān)系式
z=e沁ands=b+jQ
帶入上式,可得
21—i
5-----------:-
T1+eJO
_21-C0S69-jsina>
Tl+cosa>+ysin69
_2l-(cos2G+sin%)-j2sina>
T24-2COS69
=0+y—tan—=5+JQ
T2
到這里,我們可以就可以得到Q與①的對(duì)應(yīng)關(guān)系了。
Q=-tan-
T2
這里的c與⑴的對(duì)應(yīng)關(guān)系很重要。我們最終的目的設(shè)計(jì)的是數(shù)字謔波器,所以,設(shè)
計(jì)時(shí)候給的參數(shù)必定是數(shù)字濾波器的指標(biāo)。而我們通過間接設(shè)計(jì)設(shè)計(jì)IIR濾波器時(shí)候,首先
是要設(shè)計(jì)模擬濾波器,再通過變換,得到數(shù)字濾波器。那么,我們首先需要做的,就是將數(shù)
字濾波器的指標(biāo),轉(zhuǎn)換為模擬濾波器的指標(biāo),基于這個(gè)指標(biāo)去設(shè)計(jì)模擬濾波器。另外,這里
的采樣時(shí)間T的取值很隨意,為了方便計(jì)算,一般取Is就可以。
2.2雙1次z變換的實(shí)現(xiàn)(C語(yǔ)言)
我們?cè)O(shè)計(jì)好的巴特沃斯低通濾波器的傳遞函數(shù)如下所示。
/⑸=―-------------------------------
CIQS+4]S+…+4一5+
我們將其進(jìn)行雙1次z變換,我們可以得到如下式子
H(z)=4(s)|3i-:
=______________________________________(1+Z-T
a0!!!(1一2-丫+點(diǎn);(IT嚴(yán)(l+z-〉+…+ay.(1—z]產(chǎn)(1+z-,+…+a/l+;
可以看出,我們還是需要洛式子乘開,進(jìn)行合并同類項(xiàng),這個(gè)跟之前說的算法相差不大。其
代碼為。
[cpp]viewplaincopy
for(Count=();Count<=N;Count++)
{
for(Count_Z=0;Count_Z<=N;Count_Z++)
{
Res[Count_Z]=0;
Res_Save[Count_Z)=0;
)
Res_Save[0]=1;
for(Count_l=0;Count_l<N-Count;Count_1++)
{
for(Count_2=0;Count_2<=Count_l+l;Counl_2++)
{
if(Count_2==0)Res[Count_2]+=Res_Save[Count_2];
elseif((Count_2==(Count_14-1))&&(Count_1!=0))
ReslCount_2]+=-Res_Save[Count_2-I];
elseRes[Count_2]+=Res_Save[Count_2]-Res_Save[Count_2-1
];
for(Count_Z=0;Count_Z<=N;Count_Z++)
{
Res_Save[Count_Z]=Res[Count_Z];
Res(Count_Z]=0;
)
)
for(Count_1=(N-Count);Count_I<N;Count_l++)
{
for(Count_2=0;Count_2<=Count_l+1;Count_2++)
(
if(Count_2==0)Res[Count_2]+=Res_Save[Count_2];
elseif((Counl_2==(Counl_1+1))&&(Count_1!=0))
Res[Count_2]+=Res_Save[Count_2-1];
else
Res[Count_21+=Res_Save[Count_21+Res_Save[Counl_2-11;
)
for(Count_Z=0;Count_Z<=N;Count_Z++)
{
Res_Save[Count_Z]=Res[Count_Z];
Res[Count_Z]=0;
)
)
for(Count_Z=0;Count_Z<=N;Count_Z++)
{
*(az+Count_Z)+=pow(2,N-Count)*(*(as+Count))*
Res_Save[Count_Z|;
*(bz+Count_Z)+=(*(bs+Count))*Res_Save[Count_Z];
)
到此,我們就已經(jīng)實(shí)現(xiàn)了一個(gè)數(shù)字濾波器。
3.IIR濾波器的間接設(shè)計(jì)代碼(C語(yǔ)言)
[cpp]viewplaincopy
#include<stdio.h>
#include<math.h>
#includevmaHoc.h、
#includc<string.h>
#definepi((double*.1415926)
structDESIGN_SPECIFICATION
(
doubleCotoff;
doubleStopband;
doubleStopband_attenualion;
);
typedefstruct
|
doubleReal_part;
doubleIniag_Part;
}COMPLEX;
intCeil(doubleinput)
(
if(input!=(int)input)return((int)input)+1;
elsereturn((in()input);
intComplex_Multiple(COMPLEXa,COMPLEXb
double*Res_Real,double*Res_Imag)
(
*(Res_Real)=(a.Real_part)*(b.Real_part)-(a.Imag_Part)*(b.Imag_Part);
*(Res_Imag)=(a.Imag_Part)*(b.Real_part)+(a.Real_part)*(b.Imag_Part);
return(int)l;
in(But(ord(doubleCotoff,
doubleStopband,
doubleStopband_a(tenuation)
(
intN;
printf("Wc=%lf[rad/sec]\nu,Cotoff);
printf("Ws=%lf[rad/sec]\n",Slopband);
piintf("As=%lf[dB]\n",Stopband_attenuation);
printfC-----------------------------------------------\n”):
N=Ceil(0.5*(log1()(pow(10,Stopband_attenuation/10)-I)/
log10(Stopband/Cotoff)));
return(int)N;
intButter(intN,doubleCotoff,
double*a,
double*b)
(
doubledk=0;
intk=0;
intcount=0,count_l=0;
COMPLEXpoles[N];
COMPLEXReslN+l],Res_SavelN+lJ;
if((N%2)==0)dk=0.5;
elsedk=0;
for(k=0;k<=((2*N)-1);k++)
(
if(Cotoff*cos((k+dk)*(pi/N))<0)
{
poles[count].Real_part=-Cotoff*cos((k+dk)*(pi/N));
poles[countl.Imag_Part=-Cotoff*sin((k+dk)*(pi/N));
count++;
if(count==N)break;
printf("Pk=\n");
fbr(counl=O;count<N;count++)
(
printf("(%lf)+(%lfi)\nH,-poles[count].Real_part
,-poles[count].Imag_Part);
)
printfC------------------------------------------------------------\n");
Res|O].Real_part=poles[0].Real_part;
Res[O].Imag_Part=poles[0].Imag_Part;
Res[l].Real_part=1;
Res[1].Imag_Part=0;
for(count_l=0;count_l<N-l;count_l++)
(
for(count=0:count<=count_l+2;count++)
{
if(0==count)
(
Complex_Multiple(Res[count],poles[count_l+1],
&(Res_Save[countJ.Real_part),
&(Res_Savefcount].Imag_Part));
//printf("Rcs_Save:(%lf)+(%lfi)\n",Res_Save[O].Real_part,Res_Save[O].Imag_Part)
elseif((count_l+2)==count)
|
Res_Save[count].Real_part+=Res[count-ll.Real_part;
Rcs_Save[count].1mag_Part+=Res[count-l].Imag_Part;
}
else
(
Complex_Multiple(Res[count],poles[count_1+1],
&(Res_Save[count].Real_part),
&(Res_Save[count].Imag_Part));
//printf("Res:(%lf)+(%lfi)\n",Res[count-1].Real_par(,Res[counl-I|.Ima
g_Part);
//prinlf("Res_Save:(%lf)+(%lfi)\n",Res_Save[count].Real_part,Res_Save[count].I
mag_Part);
Res_Save[count].Real_part+=Resfcount-1].Real_part;
Rcs_Savc[countJ.1inag_Part+=Res[count-1].lmag_Part;
//printf("Res_Save:(%lf)+(%lfi)\n",Res_Save[count].Real_part,Res_Save[count].I
mag_Part);
)
//prinlfC'There\nn);
)
for(count=0:count<=N:count++)
{
Res[count].Real_part=Res_Save[count].Real_part;
Res[count].Imag_Part=Res_Save[count].1mag_Part;
*(a+N-count)=Reslcount].Rcal_part;
}
//prinlfC'There!!\n");
}
*(b+N)=*(a+N);
//.................................display-.............................................//
printf("bs=[");
fbr(count=0;count<=N;count++)
I
printf("%lf",*(b+count));
}
printf("!\n");
printf("as=[");
fbr(count=0;count<=N;count++)
I
printf("%lf",*(a+count));
)
printf(n1\n");
printfC'------------------------------------------------------------\n");
return(ini)1;
1
intBilincar(intN,
double*as,double*bs,
double*az,double*bz)
(
intCount=0,Count_l=0,Count_2=0,Count_Z=0;
doubleReslN+1J;
doubleRes_Save[N+ll;
for(Count_Z=0;Counl_Z<=N;Count_Z++)
{
*(az+Count_Z)=0;
*(bz+Count_Z)=0;
for(Count=0;Count<=N;Count++)
{
for(Count_Z=0;Count_Z<=N;Count_Z++)
RcslCount_Z|=0;
Res_Save[Count_Z)=0;
)
Res_Savef0]=1;
for(Count_l=0;Counl_l<N-Count;Count_l++)
{
for(Count_2=0;Count_2<=Count_1+1;Count_2++)
{
if(Count_2==0)
(
Res[Count_2J+=Res_Save[Count_2];
//printf("Res[%d]%lf\n",Count_2,Res[Count_2]);
)
elseif((Count_2==(Count_1+1))&&(Count_1!=0))
{
Res[Count_2]+=-Res_Save[Count_2-1];
//printf('Res[%d]%lf\n",Count_2,Res[Count_2]);
else
Rcs[Count_2]+=Res_Savc[Count_2]-Res_Savc[Count_2-11;
//printf("Res[%d]%lf\n",Count_2,Res[Count_2]);
)
//printf("Res:");
for(Count_Z=0;Count_Z<=N;Count_Z++)
|
Res_Save[Count_Zl=Res[Count_Zl;
Rcs[Count_Z]=0;
//printf(nr%d]%lf",Count_Z,Res_Save[Count_Z]);
)
//printfC*\n");
for(Count_1=(N-Count);Count_l<N;Count_l++)
(
for(Count_2=0;Count_2<=Count_1+1:Count_2++)
{
if(Count_2==0)
(
Res[Count_21+=Res_Save[Count_2];
//printf(HRes[%dJ%lf\n",Count_2,Res[Count_2J);
)
elseif((Counl_2==(Coun(_l+l))&&(Count_l!=0))
{
Res[Count_2J+=Res_Save[Count_2-I];
//printf('Res[%d]%lf\n",Count_2,Res[Count_2]);
)
else
{
Res[Count_2J+=Res_Save[Count_2]+Res_Save[Count_2-1];
//printf("Res[%d]%lf\n",Couni_2,Res[Count_2]);
//printf("Res:");
for(Count_Z=O;Count_Z<=N;Count_Z++)
(
Res_Save[Count_Z]=Res[Count_Z];
Res[Count_Z]=0;
//printf("[%dj%lf",Count_Z,Res_Save[Count_Z]);
)
//printfC1'\n");
//printf("Res:");
for(Count_Z=0;Count_Z<=N;Count_Z++)
{
*(az+Count_Z)+=pow(2,N-Count)*(*(as+Count))*Res_SavelCount_ZJ;
*(bz+Count_Z)+=(*(bs+Count))*Res_Save[Count_Z];
//printf(0%lf",*(bz+Count_Z));
)
//printf("\n");
I
for(Count_Z=N;Count_Z>=0;Count_Z—)
(
*(bz+Count_Z)=(*(bz+Count_Z))/(*(az+0));
*(az+Count_Z)=(*(az+Count_Z))/(*(az+0));
//---------------------------display--------------------------------------//
printf("bz=[");
for(Count_Z=0;Count_Z<=N;Count_Z++)
(
printf("%lf\*(bz+Count_Z));
)
printf("]\n");
printfC'az=[");
for(Count_Z=0;Count_Z<=N;Count_Z++)
(
printf("%lf",*(az+Count_Z));
}
printf(H1\n");
printf(".........................................................................................................\n");
return(int)1;
intmain(void)
intcount;
structDESIGN_SPECIFICATIONIIR_Filter;
HR.Filter.Cotoff=(double)(pi/2);//[red]
IIR_FiIter.Stopband=(double)((pi*3)/4);//[red]
11R_Filter.Stopband_attenuation=30;//[dB]
intN;
IIR_Filter.Cotoff=2*tan((IIR_Filtcr.Cotoff)/2);//[red/sec]
IIR_Filcer.Stopband=2*lan((IIR_Filter.Stopband)/2);//[red/sec]
N=Buttord(IIR_Filter.Cotoff,
11R_FiIter.Stopband,
IIR_Filtcr.Stopband_attcnuation);
printfC'N:%d\n",N);
printfC1...............................................................................\n");
doubleas[N+l],bs[N+l];
But(er(N,
IIR_Filter.Cotoff,
as,
bs);
doubleaz[N+1],bz[N+l];
Bilinear(N,
as.bs,
az,bz);
printf("Finish\n");
relum(int)O;
3.間接設(shè)計(jì)實(shí)現(xiàn)的IIR濾波器的性能
3.1設(shè)計(jì)指標(biāo)
a.截止頻率從q=g[rad]
b.阻帶起始頻率生=;i[rad]
c.阻帶衰減4=30[dB]
3.2程序執(zhí)行結(jié)果
使用上述程序,gcc編譯通過,執(zhí)行結(jié)果如下。
畫kter
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東廣州生物院聯(lián)合生科院張笑人教授課題組科研助理招聘參考考試試題及答案解析
- 廣安市前鋒區(qū)就業(yè)保障中心2025年12月公開招聘公益性崗位備考筆試題庫(kù)及答案解析
- 2026遼寧本溪市教育系統(tǒng)冬季名校優(yōu)生引進(jìn)急需緊缺人才4人(本溪市第一中學(xué))參考筆試題庫(kù)附答案解析
- 2025云南麗江市華坪縣擇優(yōu)招聘云南省職業(yè)教育省級(jí)公費(fèi)師范畢業(yè)生4人備考考試試題及答案解析
- 2025貴州黔南州面向社會(huì)招聘國(guó)有企業(yè)工作人員考察(第三批)參考考試題庫(kù)及答案解析
- 2026甘肅甘南州夏河縣兵役登記暨征兵參考筆試題庫(kù)附答案解析
- 2026年玉溪澄江市教育體育系統(tǒng)招聘畢業(yè)生(20人)參考考試試題及答案解析
- 四川省大英中學(xué)2025年臨聘教師招聘?jìng)淇脊P試試題及答案解析
- 2026年莆田市荔城區(qū)公開考核新任教師招聘53人備考筆試題庫(kù)及答案解析
- 網(wǎng)址注冊(cè)合同范本
- 唯物主義和經(jīng)驗(yàn)批判主義講義
- 鋰電池綜合回收項(xiàng)目環(huán)評(píng)報(bào)告書
- GB/T 26121-2010可曲撓橡膠接頭
- GB/T 15256-2014硫化橡膠或熱塑性橡膠低溫脆性的測(cè)定(多試樣法)
- 湖南省對(duì)口招生考試醫(yī)衛(wèi)專業(yè)試題(2010-2014年)
- 陳染 個(gè)人與女性的書寫課件
- 2022年廣西自然資源職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘考試筆試試題及答案解析
- 行政倫理學(xué)(全套課件)
- 2022年自然保護(hù)地大數(shù)據(jù)數(shù)字化管理平臺(tái)建設(shè)方案
- DB13T 5388-2021 大中型水庫(kù)管理規(guī)程
- 婦產(chǎn)科臨床路徑工作總結(jié)
評(píng)論
0/150
提交評(píng)論