數碼訊號分析 基礎知識點總結

2021-08-07 03:45:44 字數 2433 閱讀 5983

前幾篇對資料採集相關知識點進行了總結,從採集卡選型以及模擬訊號採集進行相關介紹,通過採集卡進行adc,就能獲取到電腦所能識別的數碼訊號,對於電腦而言只有離散和有限長度的資料才能被處理,接下來就對獲取的數碼訊號進行分析。

實際應用中週期性模擬訊號很複雜,很難以乙個簡單的正弦曲線來描述。傅利葉分析法可將任意複雜的波形分解為簡單的正弦、余弦或復指函式之和。

正弦波波形表示式f(t) = asin(wt+b)  

其中振幅為a,角頻率為w,相位b為常數

相位:描述波形在初始時刻t0相對於指定引數點的偏移量,單位為度或弧度;

頻率表示方式:

1)f ,單位為hz;

2)角頻率w:弧度/s,w = 2πf ;

3)rpm:每分鐘旋轉數, rpm = 60f ;

為什麼要用正弦曲線來代替原來的曲線呢?假如我們利用方波或者三角波來代替,分解訊號的方法是無窮的,但分解訊號的目的是為了更加簡單地處理訊號。而用正余弦表示原訊號會更加簡單,這是由於正余弦擁有其他訊號所不具備的性質:正弦曲線保真度。乙個正弦曲線訊號輸入後,輸出的仍是正弦曲線,只有幅度和相位可能發生變化,而頻率和波的形狀仍是一樣的,且只有正弦曲線才擁有這樣的性質,所以才用正弦曲線而不用方波或者三角波來表示。

假設取樣頻率為fs,訊號頻率f,取樣點數為n,那麼fft之後結果就是乙個為n點的複數,每乙個點就對應乙個頻率點,這個點的模值就是該頻率值下的幅度特性。若原始訊號峰值為a,那麼fft的結果的每個點(除第乙個點直流分量之外)的模值就是a的n/2倍,第乙個點表示直流分量。 n個取樣點經過fft之後,得到n個點fft結果,為了計算方便,通常n取2的整數次冪。由於fft結果具有對稱性,通常我們只使用前半部分結果。假設fft之後某點n用複數a+bi表示,那麼這個複數的模就是an =根號下a方+b方,相位pn=atan2(b,a),則n點處對應的訊號表示式為:

2an/ncos(2πfn*t+pn)   (n不等於1,且n某點處的頻率:fn = (n-1)fs/n   ;

該頻率下的幅值: an/n/2    ;

對於n=1點處的訊號,是直流分量;

取樣間隔:1/fs;

頻率解析度:取樣時間的倒數,fs/n;

變換之後的頻譜寬度(頻寬)與原始訊號也存在一定的對應關係,根據取樣定理,fft之後的頻譜寬度最大是取樣率的一半。我們都希望頻譜更寬,解析度更精確,這樣的話選擇合適的取樣點數和採用率很有必要。取樣點數越多,取樣時間越長,頻率解析度越高;取樣率越大,頻譜寬度越長。

頻譜洩露:就是訊號頻譜中各譜線之間相互干擾,使測量的結果偏離實際值,同時在真實譜線的兩側的其他頻率點上出現一些幅值較小的假譜。產生頻譜洩露的主要原因是取樣頻率和原始訊號頻率不同步,造成週期的取樣訊號的相位在始端和終端不連續。簡單來說就是計算機的fft運算能力有限,只能處理有限點數的fft,所有在擷取時域的週期訊號時,沒有能夠擷取整數倍的週期。

避免頻譜洩露除了盡量使取樣率與訊號頻率同步外,還可以採用適當的窗函式。另外乙個方法是取樣訊號時間足夠長,基本上可以覆蓋到整個有效訊號的時間跨度。這種方法經常用在瞬態捕捉中使用,例如衝擊試驗。

窗函式其實就是乙個加權函式,它在擷取的訊號時間段內有值,時間段之外值為0。加窗在時域上表現為點乘,在頻域上則表現為卷積。卷積可以被看成是乙個平滑的過程。這個平滑過程可以看出是由一組具有特定函式形狀的濾波器,因此原始訊號中在某一頻率點上的能量會結合濾波器的形狀表現出來,從而減小洩露。具有這個原理,人們通常在時域上加窗。一般窗函式有矩形窗、漢寧窗、flattop等。

load test.txt

fs=10000; % 根據輸出的資料

m=size(test)

n=max(m)

s=fft(test,n-1);

x0=abs(s);

f=(0:n-2)*fs/(n-1);%計算取樣點的對應的頻率;

n=(0:n-1);

f=(0:n)*fs/n;

plot(f,test)%實際頻譜圖;

title('頻譜圖');xlabel('頻率/hz');ylabel('幅值');

s0(1)=x0(1)/(n-1);%計算幅值,當n=1時 直流分量

s0(2:n-1)=x0(2:end)/(0.5*(n-1));%計算幅值,當n>1

fshift=round(0.5*(n-1));

figure(1);

subplot(2,1,1);

plot(1:n,test); %plot(1:n,test);

title('訊號');xlabel('取樣點數');ylabel('訊號');

subplot(2,1,2);

plot(f(1:fshift),s0(1:fshift))%由於對稱只取一半頻譜;

title('頻譜圖');xlabel('頻率/hz');ylabel('幅值');

執行程式結果如下:

Java基礎知識點總結

一 方法的過載 方法的過載與返回值型別無關,只需滿足兩個條件即可 一是方法名相同,二是引數個數或型別不同。二 陣列初始化 動態初始化 在定義陣列時,只指定陣列長度,由系統自動為元素賦值的方式。靜態初始化 在定義陣列時為每個元素賦值。有兩種方式 陣列靜態初始化的方式有兩種 1.型別 陣列名 new 型...

RxJava基礎知識點總結

場景1 被觀察者 觀察者和訂閱分開寫 先建立乙個上游observable 角色 被觀察者 observableobservable observable.create new observableonsubscribe 建立乙個下游observer 角色 觀察者 observerobserver n...

CSS基礎知識點總結

一 css的簡介 1 什麼是css 層疊樣式表,css是對html進行樣式修飾語言 層疊 就是層層覆蓋疊加,如果不同的css樣式對同一html標籤進行修飾,樣式有衝突的部分應用優先順序高的,不衝突的部分共同作用 樣式表 就是css屬性樣式的集合 2 css的作用 1 修飾html的 使其html樣式...