




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精品文檔音樂合成實驗目錄音樂合成實驗 1摘要: 1第一部分 簡單的合成音樂 21.1 合成東方紅 21.2 除噪音,加包絡 31.3 改變程序,實現1.2中的音樂升高和降低一個八度 71.4 在1.2的音樂中加入諧波 81.5 自選音樂合成兩只老虎 8第二部分 用傅里葉變換分析音樂 92.1 載入 fmt.wav 并播放 92.2 載入文件Guitar.mat ,處理原始數據realwave 92.3 分析wave2proc的基波和諧波 112.4 自動分析fmt.wav的音調和節拍 14第三部分基于傅里葉級數的音樂合成 163.1 用2.3分析出來的結果重新加諧波 163.2 通過2.4提取
2、的吉他音調信息彈奏東方紅 17實驗收獲 17摘要:本文共有三大部分:第一部分,簡單的音樂合成;第二部分,用傅里葉變換 分析音樂;第三部分,基于傅里葉級數的音樂合成。由潛入深,一步一步分析了 用MATLA進行音樂合成的過程。通過本實驗達到了加深對傅里葉級數和傅里葉 分析的理解,熟悉對MATLABS本使用的目標。第一部分簡單的合成音樂1.1 合成東方紅根據東方紅第一小節的簡譜和十二平均律計算出該小節每個樂音的頻率, 在MATLA呻生成幅度為1,抽樣頻率為8kHz的正弦信號表示這些樂音,用sound 播放合成的音樂1=F g 5 S I 2 - | 1 161 2 - |SM樂一樂方-3第一小節前譜
3、由圖可知東方紅的曲調定為 F,即1=F,對應的頻率為349.23Hz,據此 可以計算出其他樂音的頻率,例如 5對應的頻率為7/12f5 = 349.23父2= 523.25, 一次類推計算出第一小節各樂音對應的頻率為:55621162523.25523.25587.33392349.23349.23293.66392在確定了各樂音的頻率之后需要確定每個樂音的持續時間。每小節有兩拍, 一拍的時間是0.5s,因此各樂音的持續時間為:55621162時間0.50.250.2510.50.250.251而在MATLAB表示樂音所用的抽樣頻率為fs=8000Hz,也就是所1s鐘內有 8000個點,抽樣點
4、數的多少就可表示出每個樂音的持續時間的長短。用一個行向 量來存儲這段音樂對應的抽樣點,在用 sound函數播放即可。根據以上分析在MATLAB編寫如下程序:sound_1_1.mclear;clc;fs=8000; %由樣頻率f=523.25 523.25 587.33 392 349.23 349.23 293.66 392;%&個樂音對應的頻率time=fs*1/2,1/4,1/4,1,1/2,1/4,1/4,1;%&個樂音的抽樣點數N=length(time);%£段音樂的總抽樣點數east=zeros(1,N);%ffl east向量來儲存抽樣點n=1;for
5、 num=1:N%RJ用循環產生抽樣數據,numg示樂音編號t=1/fs:1/fs:time(num)/fs;峻生第 num樂音的抽樣點east(n:n+time(num)-1)=sin(2*pi*f(num)*t);%由樣點對應的幅值 n=n+time(num);endsound(east,8000);%8放音樂在MATLAB運行sound_1_1.m,播放出了東方紅的第一段,但是可以聽 出效果很不好,只能聽出具有東方紅的調子而已。1.2 除噪音,加包絡在1.1中聽到有“啪”的雜聲,下面通過加包絡來消噪音。最簡單的包絡為指數衰減。最簡單的指數衰減是對每個音乘以et因子,在實驗中首先加的是e5
6、t的衰減,這種衰減方法使用的是相同速度的衰減,但是發現噪音并沒有完全消除,播放的音樂效果不是很好,感覺音樂起伏性不強。于 是采用不同速度的衰減,根據樂音持續時間的長短來確定衰減的快慢,樂音持續 時間越長,衰減的越慢,持續時間越短,衰減的越快。在 1.1程序的基礎上加上 包絡,編寫如下程序:sound_1_21.mclear;clc;fs=8000; %由樣頻率f=523.25 523.25 587.33 392 349.23 349.23 293.66 392;%&個樂音對應的頻率time=fs*1/2,1/4,1/4,1,1/2,1/4,1/4,1;%&個樂音的抽樣點數N=l
7、ength(time);%£段音樂的總抽樣點數east=zeros(1,N);%ffl east向量來儲存抽樣點n=1;for num=1:N%RJ用循環產生抽樣數據,numg示樂音編號t=1/fs:1/fs:time(num)/fs;峻生第 num樂音的抽樣點G=zeros(1,time(num);%G/存儲包絡數據的向量G(1:time(num)=exp(1:(-1/time(num):1/8000);%生包絡點east(n:n+time(num)-1)=sin(2*pi*f(num)*t).*G(1:time(num);%合第num樂音加上包絡 n=n+time(num);en
8、dsound(east,8000);%§放plot(east);播放后可以聽出噪音已經消除,同時因為不同時長的樂音衰減的快慢不一樣, 音樂聽起來更有起伏感,下圖是加包絡后的 east圖像。-3210-1-200.511.522.533.54X 10精品文檔更科學的包絡如下圖所示,每個樂音都經過沖激、衰減、持續、消失四個階由上圖可以看出這個包絡是四段直線段構成的, 因此只要確定了每段線段的 端點,即可用端點數據寫出直線方程,因為直線方程可以用通式寫出(我用的是 斜截式),因此這段包絡可以用簡單的循環來完成。例如認為包絡線上的數據如 下圖所示:據此在MATLAB編寫如下程序: sound
9、122.mclear;clc;fs=8000;%由樣頻率f=523.25 523.25 587.33 392 349.23 349.23 293.66 392;%&個樂音對應的頻率time=fs*1/2,1/4,1/4,1,1/2,1/4,1/4,1;%&個樂音的抽樣點數N=length(time);%£段音樂的總抽樣點數east=zeros(1,N);%ffl east向量來儲存抽樣點n=1;for num=1:N%RJ用循環產生抽樣數據,numg示樂音編號t=1/fs:1/fs:(time(num)/fs;%產生第 num樂音的抽樣點P=zeros(1,time(
10、num);%的存儲包絡數據的向量L=(time(num)*0 1/5 333/1000 333/500 1;%包絡線端點對應的橫坐標T=0 1.5 1 1 0;%包絡線端點對應的縱坐標s=1;b=1:1:time(num);聯生包絡線抽樣點for k=1:4P(s:L(k+1)-1)=(T(k+1)-T(k)/(L(k+1)-L(k)*(bL(k+1)-1)-L(k+ 1)*ones(1,L(k+1)-s)+T(k+1)*ones(1,L(k+1)-s);%包絡線直線方程通式s=L(k+1);end east(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:t
11、ime(num); %合第num樂音加上包絡n=n+time(num);endsound(east,8000); plot(east);運行得到的圖像為:21.5 10.5 0-0.5-1-1.5-200.511.522.533.54X 10下圖是兩個樂音交接處的局部放大圖,可以看到前一個樂音一直衰減到0,后一個樂音從0開始增加,因此消除了噪音。若不需要每個音都衰減到0,例如只需衰減到持續階段幅值的20%對程序做 簡單的修改即可,將T=0 1.5 1 1 0改為T=0.2 1.5 1 1 0.2 運行得到的結果2 1.51 0.50 -0.5-1 -1.5-200.511.522.533.54
12、x 10由圖可見,每個樂音都是衰減到一較小值而不是0,也能消除噪音,同時音樂聽起來更加連續。1.3 改變程序,實現1.2中的音樂升高和降低一個八度升高一個八度即每個樂音的頻率都提高一倍,變為原來的 2被;降低一個八 度即每個樂音的頻率都減小一倍,變為原來的 1/2。因此最簡單的辦法是將存儲 樂音頻率的向量每個元素改變為2或1/2倍。即將程序中的 f=523.25 523.25 587.33 392 349.23 349.23 293.66 392; 改為 f=523.25 523.25 587.33 392 349.23 349.23 293.66 392*2; 或 f=523.25 523.
13、25 587.33 392 349.23 349.23 293.66 392/2;將上述音樂上高半個音階,即將頻率變為原來的21/12 (1.06)倍,可以利用resamlpe函數對原來的數據點進行重采樣來實現 east=resample(east,100,106);因為resample進行重新采樣后會使每個樂音的持續時間改變,但是因為升高半個音階,頻率改變不大,所以每個音的持續時間是基本不變的。1.4在1.2的音樂中加入諧波在1.2的音樂中加上二、三、四次諧波,基波幅度為1,高次諧波幅度分別為0.2、0.3、0.1。只需將1.2程序改為sound14.mclear;clc;fs=8000;%
14、由樣頻率f=523.25 523.25 587.33 392 349.23 349.23 293.66 392;time=fs*1/2,1/4,1/4,1,1/2,1/4,1/4,1;珞個樂音對應的頻率 %各個樂音的抽樣點數N=length(time);east=zeros(1,N);n=1;for num=1:N地段音樂的總抽樣點數%用east向量來儲存抽樣點%RJ用循環產生抽樣數據,numg示樂音編號t=1/fs:1/fs:(time(num)/fs;P=zeros(1,time(num);%產生第num樂音的抽樣點%的存儲包絡數據的向量L=(time(num)*0 1/5 333/100
15、0 333/500 1;T=0 1.5 1 1 0; s=1;b=1:1:time(num);for k=1:4%包絡線端點對應的橫坐標 %包絡線端點對應的縱坐標%產生包絡線抽樣點P(s:L(k+1)-1)=(T(k+1)-T(k)/(L(k+1)-L(k)*(bL(k+1)-1)-L(k+ 1)*ones(1,L(k+1)-s)+T(k+1)*ones(1,L(k+1)-s);%包絡線直線方程通式s=L(k+1);蹴形幅值矩陣endm=1 0.3 0.2;ss=zeros(1,length(t);勵口諧波for i=1:length(m) ss=ss+m(i)*sin(2*i*pi*f(nu
16、m)*t);endeast(n:n+time(num)-1)=ss.*P(1:time(num);%合第num樂音加上包絡n=n+time(num);endsound(2*east,8000); plot(east);即可,加顏色部分為修改的部分,加上諧波后音樂效果變得更好了。1.5自選音樂合成一一兩只老虎兩只老虎41 = C 1231 12311345- 345-p曲調為C,因此可以得到每個樂音對應的頻率分別為:12345262.63293.66329.63349.23392每小節有四拍,一拍的時間是0.5s,因此各樂音的持續時間為:12311231時間0.50.50.50.50.50.50
17、.50.5345345時間0.50.510.50.510.25sound_1_5.mclear;clc;fs=8000;%由樣頻率f=262.63 293.66 329.63 262.63 262.63 293.66 329.63 262.63 329.63349.23 392;%&個樂音對應的頻率time=fs*1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1,1/2,1/2,1;%各個樂音的抽樣點數N=length(time);%£段音樂的總抽樣點數east=zeros(1,N);%ffl east向量來儲存抽樣點n=1;for num=
18、1:N%RJ用循環產生抽樣數據,numg示樂音編號t=1/fs:1/fs:time(num)/fs;峻生第 num樂音的抽樣點G=zeros(1,time(num);%G/存儲包絡數據的向量G(1:time(num)=exp(1:(-1/time(num):1/8000);%生包絡點east(n:n+time(num)-1)=sin(2*pi*f(num)*t).*G(1:time(num);%合第num樂音加上包絡 n=n+time(num);endsound(east,8000);%§放plot(east);第二部分用傅里葉變換分析音樂2.1 載入fmt.wav并播放利用wavr
19、ead函數載入,用sound函數播放,程序如下:sound_2_1.mwave=wavread('fmt.wav');sound(wave)這段音樂聽起來比之前合成的音樂更加真實,因為里邊含有豐富的諧波。2.2 載入文件Guitar.mat ,處理原始數據 realwave載入文件Guitar.mat ,分析wave2proc是怎么由realwave得到的。利用load Guitar.mat; 載入并用 plot 函數將realwave、wave2proc分別畫出,得 到以下兩幅圖0.25-0.1-0.15realwave0.20.150.10.050-0.05-0.2 0r5
20、01001502002500.250.20.150.1wave2procI i II j n Ii10.050-0.05-0.1-0.15 050100150200250可以看到,wave2proc比realwave的周期性好得多,去掉了非線性諧波和噪 聲。在時域做,從圖上可以看到,realwave的數據大約是10個周期的共243個數 據,因此可以用resample函數對realwave進行重新采樣,將采樣點提高到250個, 那么重采樣后每個周期有25個點,將這25個點對應相加求平均值后得到一個周期 的值,因為進行了平均,減小了非線性諧波和噪音,然后將這25個數據延托成十 個周期即250個點,
21、在利用resample函數對得到的函數重新采樣將采樣點數恢復 到243個。根據以上分析,編寫實現這個思路的程序如下:sound_2_2.mclear;clc; load Guitar.mat ; wave=resample(realwave,250,243);%B采樣,將點數變為 250w=zeros(1,25); for i=1:25 for k=0:9 w(i)=w(i)+wave(25*k+i);%1階周期的對應點分別求和end end w=w/10;%a平均值wave2=repmat(w,1,10);%等1個周期的10個點延拓至250個點wave2=resample(wave2,243
22、,250); %B采樣,將點數變回 243 hold on,plot(wave2, 'r' ),hold off ; %等處理后的數據繪出,紅色 hold on,plot(wave2proc);%等所給的數據繪出,藍色運行后的結果為:0.250.20.150.10.050-0.05-0.1-0.15由圖可見,兩組數據重合的很好,說明這種方法是很不錯的方法。2.3 分析wave2proc的基波和諧波為了分析wave2proc的基波和諧波,可以對wave2proc進行傅里葉變換,得到 wave2proc的幅值譜,在頻譜圖上的第一個突出的波峰對應的頻率即為wave2proc基頻,利用
23、help fft學習了 MATLAB快速傅里葉變換函數fft的用法,編寫了如 下程序:clear;clc;load Guitar.mat;fs=8000;NFFT = 2Anextpow2(length(wave2proc);Y = fft(wave2proc,NFFT)/length(wave2proc);g = fs/2*linspace(0,1,NFFT/2+1);plot(g,2*abs(Y(1:NFFT/2+1)0.080.070.060.050.040.030.020.01005001000150020002500300035004000雖然從圖上可以大概看出包絡,但是非常不明顯,
24、假如提高頻域的抽樣頻率,由圖可見雖然頻域的抽樣頻率提高了很多,但是得到的包絡依然不精確,這 是因為wave2proc是周期函數,但是現在的wave2proc只有243個數據點,并不能 非常明顯的體現出其周期性,因此它的幅值譜的離散化程度不高,雖然提高了頻 域的抽樣頻率,但是wave2proc數據點的周期性并沒有增加,所以要顯示出離散 化程度高的幅值譜,就要增加wave2proc的周期性,即讓wave2proc在時域重復多 次后在進行傅里葉變換。利用repmat函數可以將wave2proc在時域重復。將程序修改為 sound_2_3.mclear;clc;load Guitar.mat;fs=8
25、000;wave2proc =repmat(wave2proc,20,1);%等 wave2proc重復20次NFFT = 2Anextpow2(length(wave2proc);Y = fft(wave2proc,NFFT)/length(wave2proc);g = fs/2*linspace(0,1,NFFT/2+1);plot(g,2*abs(Y(1:NFFT/2+1)可以看出幅值譜的離散化程度已經非常高了。由圖讀出wave2proc的基頻為329.1Hz,幅值為0.05401,高次諧波幅值分別為:W 23456789波幅0.076760.048410.051900.0057090.
26、019230.0067410.007326值2.4 自動分析fmt.wav的音調和節拍思路分析:將fmt.wav導入后得到的是一個向量,它包含了這段音樂的所有信息,要自 動分析這段音樂的音調就需要將每個音調對應的點進行傅里葉變換得到其幅值 譜,在幅值譜上找到第一個幅值較大的極大值點,該點對應的就是該音調的基頻,得到基頻后就可以得到高次諧波的幅值。為了使對每個音調進行傅里葉變換后得 到的幅值譜離散程度高,應該將每個音調的數據在時域上重復多次,由于這些點都是直接采集的為做處理的點,因此其重復次數應該足夠大才能體現出較強周期 性,本實驗采用重復1000次,雖然重復次數越多越好,但是次數太大,程序運行
27、 的速度會大大降低。這里邊還有兩個關鍵點:第一,在從幅值譜上找基頻時,因為圖上的極大值 點很多,怎么能讓程序自動確定出準確的基頻。第二,在程序找到了基頻之后, 再由基頻去獲取高次諧波的幅值時需要有一定的容錯能力,例如若基頻為200Hz, 幅值為1,那么對應的二次諧波的頻率為400Hz,但是很可能恰好幅值譜上400Hz 處的幅值為0.01,但是401Hzi的幅值為0.2,這時實際上的二次諧波應該為401Hz, 但是若沒有給基頻一個容錯范圍,顯然找到的二次諧波的幅值是不正確的。針對以上提出的兩個關鍵點,我找到了兩條有針對性的解決辦法。對于第一 點,因為幅值譜上極大值點的幅值足夠大才能將其定位基頻,
28、因此在分析了幾個音調后發現基頻處的幅值都在0.025以上,因此將基頻處的限定條件改為幅值大 于0.025的,但是在運行后發現,有幾個音調沒有分析出來,說明它們的基頻幅 值小于0.025 ,其實可以觀察一下fmt.wav的波形就會發現,有幾段的整體幅值很 小,因此基頻幅值小,于是又在加上限定條件,若所有點的幅值都小于0.02,那么再用0.015作為幅值的限定條件繼續找,這樣就將剩下的音調基頻也確定出來 了。對于上述的第二點,可以將確定出的基頻的誤差設為+-1Hz,例如程序確定的基頻為200Hz,實際的基頻應該在(200-1 )到(200+1)之間,那么k次諧波對 應的頻率范圍是k*(200-1)
29、到k*(200+1),在這個區間中繼續找幅值的極大值點就 是k次諧波對應點。根據以上思路,下面開始編寫用于分析一個音調頻率的函數analysis 。在取諧波幅值時,幅值小于基波幅值5%的諧波認為其幅值為0,最終諧波的幅值用歸一化后的數據表示。每一步的詳細思路見注釋。analysis.m精品文檔function y1 y2=analysis(w,a)%設有兩個返回值,y1返回頻率,y2返回幅值,兩個變量,w為待分析數組, a為數據的抽樣頻率fs=a;%!里葉變換的抽樣頻率y1=zeros(1,7);%求最大7次諧波,因此定義1*7矩陣y2=zeros(1,7);NFFT = 2Anextpow2
30、(length(w);Y = fft(w,NFFT)/length(w);g = fs/2*linspace(0,1,NFFT/2+1);p=2*abs(Y(1:NFFT/2+1);plot(g,p)%以上為傅里葉變換部分d=floor(NFFT/fs);%等誤差IHzft成對應的點數for k=2:length(p)-1if (p(k)>0.02)&&(p(k)>p(k-1)&&(p(k)>p(k+1)始找基頻的條件y1(1)=g(k);儲基頻y2(1)=p(k);%存儲基波幅值breakelseif (p(k)>0.015)&
31、&(p(k)>p(k-1)&&(p(k)>p(k+1)%若未找到基頻,將幅值限制改為0.015,繼續尋找y1(1)=g(k);y2(1)=p(k);endendfor t=2:7for i=t*(k-d):t*(k+d)就誤差允許的范圍內尋找t次諧波點if(p(k)>0.02)&&(p(i)>0.05*p(k)&&(p(i)>p(i-1)&&(p(i)>p(i+1)y2(t)=p(i)/y2(1);%皆波幅值歸一化yi(t)=g(i);breakelseif(p(k)>0.015)
32、&&(p(i)>0.05*p(k)&&(p(i)>p(i-1)&&(p(i)>p(i+1)y2(t)=p(i)/y2(1);y1(t)=g(i);應一段循環是與找基頻條件相對應的獲取高次諧波幅值end精品文檔endend精品文檔在編寫完分析函數analysis后即可編寫自動分析的主程序。 首先在Coool Edit中手動標定音調交界處的時間節點,得到了 time向量time=floor(0.096 0.267 1.767 2.234 2.706 3.146 3.606 4.056 4.520 5.030 5.749 5.978
33、7.015 7.709 7.923 8.028 8.490 8.959 9.454 9.852 10.125 10.356. 10.565 10.822 11.292 11.741 12.284 12.741.13.269 13.758 14.315 14.939 15.432/16.384*N);'/16.384*N '中16.384是fmt.wav的總長度,N為fmt.wav數據點的總數,這一項 是為了將時間轉換成對應的數據點數,由于點的個數必須是整數,因此用 floor 函數進行取整。在得到了對應音調交接處的點后就可以進行編程了,用循環一個一個音調分析。程序如下: sou
34、nd_2_4.m clear;clc; wave=wavread('fmt.wav');哦入文件N=length(wave);%確定數據總數time=floor(0.096 0.267 1.767 2.234 2.706 3.146 3.606.4.056 4.520 5.030 5.749 5.978 7.015 7.709 7.923.8.028 8.490 8.959 9.454 9.852 10.125 10.356.10.565 10.822 11.292 11.741 12.284 12.741.13.269 13.758 14.315 14.939 15.432/
35、16.384*N);%節點向量fs=N/16.384;%!定數據的抽樣頻率n=length(time); for k=1:n; if k=1 temp=wave(1:time(k)-1); else temp=wave(time(k-1):time(k)-1); %等第k個音調數據存入temp矩陣 end temp=repmat(temp,1000,1);%等數據重復 1000次F(k,1:7) U(k,1:7)=analysis(temp,fs);%等每個音調的處理結果分別保存,F保存頻率,U保存幅值 end運行后的結果見Excel文件“自動分析結果”第三部分 基于傅里葉級數的音樂合成3.1
36、 用2.3分析由來的結果重新加諧波基頻329.1Hz 幅值為0.05401W 23456789波幅0.076760.048410.051900.0057090.019230.0067410.007326值 再次完成1.4只需將1.4程序中的波形幅度矩陣m=1 0.3 0.2改為m=0.05401 0.07676 0.04841 0.0519 0.005709 0.01923 0.006791 0.007326;即可3.2 通過2.4提取的吉他音調信息彈奏東方紅根據2.4分析的結果可以提取出吉他的音調信息,在“自動分析結果” Excel 文件中用黃色標出了出來,一下所用的音調信息用最接近的頻率來
37、近似。 而所給 信息中缺少523.25和587.33的數據,因此用它們的一般來近似所293.66349.23392523.25587.33近似頻 率291.97350.65391.942*261.632*295.451111111120.520305440.2757865390.1086165950.3071496930.205838324300.1758122440.06907235600.15708081340000.057298602050.052802710.05603520200.0753863870.08891702260.0959402601000700000.065977510將1.4中的程序改為sound_3_2.mfs=8000;%由樣頻率f=523.25 523.25 587.33 392 349.23 349.23 293.66 392;%各個樂音對應的頻率time=fs*1/2,1/4,1/4,1,1/2,1/4,1/4,1;%&個樂音的抽樣點數N=l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣東省佛山市高考數學二模試卷(含答案)
- 商用房屋使用協議
- 鐵路旅客運輸服務途中作業96課件
- 鐵路調車綜合實訓鐵鞋的使用和注意事項課件
- 鐵路工程安全技術石家莊鐵路63課件
- 日式餐廳裝修施工方案
- 中國人傳統節日課件
- 中醫技能用書課件
- 中專內科護理課件
- 酒店多功能會議室場地租賃合同
- 宿舍樓設計開題報告
- 益生菌與健康課件
- 2022醫學課件醫院獲得性肺炎(HAP)診治指南最新綜述(精)
- 教育的起源和古代東方文明古國的教育
- 如何提高小學數學課堂教學地有效性講座
- 05 【人教版】七年級下期中數學試卷(含答案)
- 湊十法加法豎式運算(可打印)
- GB_T 31148-2022木質平托盤 通用技術要求_(高清-最新版)
- 固體物理(黃昆)第一章
- 認識餐飲環境(課堂PPT)
- 常用拉鉚螺母規格表
評論
0/150
提交評論