對功率譜的一點理解

2021-06-26 07:10:17 字數 1803 閱讀 1871

下面的matlab程式分別使用週期圖法、相關函式法以及ar譜方法計算訊號的功率譜。

% power spectrum estimated

clear all;

clc;

close all;

fs=1000; % 取樣頻率

nfft = 1024; % fft計算點數

%產生含有雜訊的序列

n=0:1/fs:1;

xn=cos(2*pi*100*n)+3*cos(2*pi*200*n)+(2*randn(size(n)));

subplot(2,2,1);plot(xn);title('加噪訊號');grid on

% 週期圖法

window=boxcar(length(xn)); %矩形窗

[psd1,f]=periodogram(xn,window,nfft,fs); %直接法

psd1 = psd1 / max(psd1);

subplot(2,2,2);plot(f,10*log10(psd1+0.000001));title('週期圖法');grid on

% 自相關法

cxn=xcorr(xn,'unbiased'); %計算序列的自相關函式

cxk=fft(cxn,nfft);

psd2=abs(cxk);

index=0:round(nfft/2-1);

k=index*fs/nfft;

psd2 = psd2 / max(psd2);

psd2=10*log10(psd2(index+1)+0.000001);

subplot(2,2,3);plot(k,psd2);title('自相關法');grid on

% ar譜

psd3 = pyulear(xn, fs, nfft);

psd3=psd3/max(psd3);

psd3 = psd3 / max(psd3);

index=0:round(nfft/2-1);

psd3=10*log10(psd3(index+1)+0.000001);

subplot(2,2,4);plot(k, psd3);title('ar譜估計');grid on;

現在就此來說是關於功率譜的幾點理解:

功率譜的資料都是相對值,他無法給出訊號的實際絕對幅值,一般只要看峰值之間的比值就行了,也可以對資料歸一化

功率譜中的峰值代表的是訊號中的週期成分,隱含的週期訊號能量要比隨機訊號大(這個一般能理解的)。比如,上面xn是

xn=cos(2*pi*100*n)+3*cos(2*pi*200*n)+(2*randn(size(n)));
其週期包括200hz及100hz,200hz的幅值比100hz大,再看功率譜圖中,清晰的體現了訊號中含有200hz和100hz的訊號。

直接法又稱週期圖法,它是把隨機序列x(n)的n個觀測資料視為一能量有限的序列,直接計算x(n)的離散傅利葉變換,得x(k),然後再取其幅值的平方,並除以n,作為序列x(n)真實功率譜的估計

間接法先由序列x(n)估計出自相關函式r(n),然後對r(n)進行傅利葉變換,便得到x(n)的功率譜估計

直接採用平均週期圖法求功率譜時,功率普形狀呈鋸齒形,譜峰點的準確位置不大好定。於是可以採用其他的方法對譜進行平滑操作,平滑化,僅僅是為了使圖形光滑,並不會使得波的本質受到歪曲和畸變。反過來說,由於不純的東西去掉了,本質的東西必然會更加顯示出來!平滑化的程度可以根據所分析的訊號,選擇合理的窗函式和頻寬!

平均週期圖法和其他方法求出的結果,引數條件取得一樣的話,可以得到完全相同的結果。

對 threadfence的一點理解

一直沒搞清楚,cuda 2.2版增加的 threadfence到底有何作用,直到今天看到sdk 3.0手冊 中的下面例子才恍然大悟.中文為我的理解,嘿嘿 乙個求和的例子 device unsigned int count 0 統計有幾個block結束的變數 shared bool islastblo...

對GBDT的一點理解

gbdt由一系列的回歸樹組成,如下圖所示 樹的深度未必都要一樣,下圖僅為示意圖 gbdt原理 針對每乙個類別訓練一系列的回歸樹,再累加每個類別回歸樹的 值得到針對每個類別的最終的 值。單獨拿乙個類別來說,訓練的過程中假設需要 的值為f xi 實際的值為yi 有loss function l yi,f...

對block的一點理解

對block的理解 block宣告的寫法 property strong,nonatomic void block void property copy,nonatomic void block void block的本質 就是oc的物件,內部也有isa指標,block是封裝了函式呼叫以及函式呼叫環...