[問題] 如何利用線性調頻Z轉換得到經過線性調쀠…已回收

看板MATLAB作者 (123)時間16年前 (2009/04/26 16:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
在書本上有看到1個線性調頻Z轉換的範例,如下 有一信號x(t)=10*sin((2*pi*60*t)+0.1*pi)+0.5*sin[(2*pi*(1-2*0.015)*60*t)+0.3*pi] 在MATLAB下實現信號x(t)的程式如下, t=0:0.0001:1; y=10*sin(2*pi*60*t+0.1*pi)+0.5*sin(2*pi*(1-2*0.015)*60*t+0.3*pi); plot(t,y); xlabel('時間'); ylabel('幅值'); x(t)的時域波形圖,如下網址圖3所示。 http://www.wretch.cc/album/show.php?i=ocean2466&b=2&f=1357389724&p=2 於Matlab下對信號x(t)在0-10Hz的頻率範圍使用CZT(線性調頻Z變換) 的快速演算法進行細化處理後,其幅頻譜圖如圖4所示 http://www.wretch.cc/album/show.php?i=ocean2466&b=2&f=1357389725&p=3 以下是老師給的程式,老師是說程式可以跑出圖4(fs為採樣頻率) b=fir1(300,0.2,'high',chebwin(301,17)); % FIR高通濾波器 d=filter(b,2,x); fs=200; f1=0; f2=10; m=256; w = exp(-j*2*pi*(f2-f1)/(m*fs)); a = exp(j*2*pi*f1/fs); z = czt(d,m,w,a); fz = ((0:length(z)-1)'*(f2-f1)/length(z)) + f1; plot(fz,abs(z)); title('CZT') xlabel('頻率(Hz)'); ylabel('幅值'); 但是我在matlab中執行上面的程式時出現以下的錯誤訊息 Undefined function or variable "x". Error in ==> ff at 3 d=filter(b,2,x); 後來我有請教別人說這是什麼問題,他說是: 程式中並沒有給x,這個x是你所希望去過濾的訊號, 或者說是原始訊號,也可以產生一個亂數訊號去進行, 例如x=randn(1,2048); 所以後來我在程式中加入x=randn(1,2048); 修改後的程式如下; x=randn(1,2048); b=fir1(300,0.2,'high',chebwin(301,17)); % FIR高通濾波器 d=filter(b,2,x); fs=200; f1=0; f2=10; m=256; w = exp(-j*2*pi*(f2-f1)/(m*fs)); a = exp(j*2*pi*f1/fs); z = czt(d,m,w,a); fz = ((0:length(z)-1)'*(f2-f1)/length(z)) + f1; plot(fz,abs(z)); title('CZT') xlabel('頻率(Hz)'); ylabel('幅值'); 修改後的程式可以執行了,但是執行後的圖形並不是圖4的圖形,請問要怎麼調整才能跑出圖4呢?? 還有想請問程式中 b=fir1(300,0.2,'high',chebwin(301,17)); % FIR高通濾波器 d=filter(b,2,x); w = exp(-j*2*pi*(f2-f1)/(m*fs)); a = exp(j*2*pi*f1/fs); z = czt(d,m,w,a); fz = ((0:length(z)-1)'*(f2-f1)/length(z)) + f1; 這6行指令分別代表什麼意思呢??? ps.因為花了很多時間、找了很多資料但還是不懂程式、也找不出原因 請大家幫我一下,感激不盡~~謝謝^_____^ . -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.43.105 ※ 編輯: powerdoor 來自: 114.45.43.105 (04/26 16:59)
文章代碼(AID): #19z25SwP (MATLAB)
文章代碼(AID): #19z25SwP (MATLAB)