matlab生成sin訊號以及fft設定

2022-07-07 16:00:15 字數 1297 閱讀 7236

f=4000; %訊號頻率為4khz

fs=48000; %取樣率為48khz

t=(0:1/fs:1000/fs); %定義訊號的時間範圍

x=cos(2*pi*f*t); %生成訊號

fir濾波器中的頻響是0~pi,因此如果取樣率是48khz,如上圖所示通帶中心在0.168附近,那通帶的訊號頻率應該是(48/2)*0.168 = 4khz左右。

fir ip的輸出實際的位寬和有效位寬可能不一致,如下圖所示的ip輸出位寬為40bit,實際有效位寬為36bit。有效頻寬內包含兩bit符號位,因此實際截位為bit34~bit19(擷取16bit)。

本例中可以輸入乙個4khz的正弦波,由於在通帶內因此不會衰減,看輸出的最高有效位在哪,實際測試最高有效位也是bit33,符號位為bit34.

fft使用:

fft的ip使用和fix16_15還是fix16_0沒有關係,不影響計算的結果,重點在於量化的精度,如果精度差太大就和matlab的結果差太大導致數值上對不上。

影響fft精度的因素:

1. phase factor 旋轉因子的位寬

2. 輸入資料的位寬(資料有效位寬為16bit時,fft的輸入放到只24bit,相當於輸入資料乘以256,也可以改善精度)

3. 輸入資料的範圍過小也影響精度,應該同比例放大至位寬範圍內最大值。

4. 動態配置ip時,需要仔細檢視文件pg109,page55 講的注意事項及方法。

5. 對於non-realtime以及realtime的不同模式,ip輸出的介面訊號是不一樣的,動態配置也和這個模式有關係。

6. 沒啥特殊情況,建議使用realtime模式

7. 某些情況下,fft和ifft的輸出結果實部可能很接近,不必糾結於此,看matlab對應的結果即可,另外此時虛部相差很大。

8. 輸入是16bit的情況下,如果輸入值很小(比方最大兩三百這種),那麼輸出的值和matlab的偏差會很大,極有可能連符號位都對不上,其實是因為精度導致的,

此時把fft的輸入設定成24bit,將16bit資料對映到高16bit,低8bit可以理解為作為fft運算中間值的精度擴充套件位,運算的結果再取高32位,可以極大的改善精度,基本能和matlab對應上。

訊號的取樣以及matlab實現

在matlab當中對乙個連續訊號進行取樣,往往不是那麼容易的理解,這是因為在matlab中畫一條連續曲線其實已經進行了取樣,matlab中所有的曲線都是用點擬合出來的,點越密,畫出來的曲線也就越清晰,下面用程式說明 close clear all fd 1000 fd就是取樣頻率,只有fd取得越大,...

Matlab生成各種偽隨機訊號 idinput指令

只要是在訊號系統這條道上混過的童鞋都知道,衝激訊號是測試系統的最理想訊號。因為時域的卷積相當於頻域的乘積,而衝擊訊號的頻域擁有最廣泛的頻譜,可以 暴露 系統最完整的資訊,那麼問題來了?這麼好的東西,你咋就不用呢?傻 還真不是這樣,能讓我們計算機產生乙個理想的衝激訊號那是多難的事啊!想象狄拉克,就被難...

matlab訊號處理

閒暇時間寫了一些關於訊號處理的東西,基於matlab.訊號時域分析時的常用函式 方法 1.impulse impulse用於求連續系統衝激響應,並繪製其時域波形。呼叫格式 impulse b,a or impulse b,a,t or impulse b,a,t1 t2 b,a 系統方程對應的係數矩...