
- •1.Спектри вищих порядків для аналізу еег сигналів інтерфейсів мозок- комп’ютер
- •1.2. Зсув і дисперсія алгоритму оцінювання
- •2.Збір даних. Опис методики та виконання експерименту.
- •3.2. Оцінювачі на основі критеріїв
- •3.3. Квадратичний фазовий зв’язок
- •4. Дослідження та аналіз сигналів уявних рухів.
- •5. Побудова біспектру із застосуванням функції для оцінки зведених статистик та побудови біспектру.
3.2. Оцінювачі на основі критеріїв
FT, на частоті o, може розглядатися як фільтр, який пропускає тільки компоненти з частотою o, придушуючи інші. При даних кінцевої довжини, однак, спектральна оцінка страждає від проблем витоку «бічних пелюсток» (з деталями, що залежатимуть від вибору функції вікна).
Розглянемо кінцеву імпульсну характеристику(FIR) фільтра довжиною р,
де вхідний
вважається
нульовим середнім. Дисперсія виходу
фільтра
дається:
де
і
це
автокорреляційна матриця.
Ми
хотіли б, позначити дисперсію
мірою потужності спектральної
Щільності x(n) при частоті o. Крім того, FIR фільтри повинні пропускати
синусоїди на частоті o. з коефіцієнтом посилення єдності і, отже, у нас є обмеження,
Ми також хочемо звести до мінімуму внесок від синусоїд з частотами, відмінними від частоті o. , це може бути досягнуто за рахунок мінімізації вихідної дисперсії (1-152) з урахуванням обмежень в (1-153). В результаті оцінка
де
Ця оцінка, яку називають по-різному:
Максимальної правдоподібності Капона або оцінкою дисперсії мінімальних спотворень [8, 27], не є істинною оцінкою спектральної щільності.
Наприклад, якщо x(n) складається з гармонік на частоті o і потужності Р, яка
спостерігається
в білому шумі з дисперсією
,
то
де р-число автокореляційних затимок, що використовується; зверніть увагу, що потужність шуму Вклад був зменшений з коефіцієнтом р. Роздільна здатність цього
оцінки, як повідомляється в [27]
де SNR є відношеням сигнал-шум (відношення дисперсії сигналу до дисперсії шуму), а р-довжина автокореляційної послідовності. Ця оцінка
здійснюється в harmest і doa.
Спектральна оцінка максимальної ентропії Бурга заснована на наявності
точно відомих затримок автокореляції, (в кожному випадку
гаусова PDF(probability density function - функція щільності ймовірностей) і AR(p) модель отримана для процесу x(n)). trench може бути використана для оцінки параметрів моделі AR. Роздільна здатність
Для
максимальна оцінка ентропії кращу
роздільну здатність, ніж це робить
оцінка максимальної правдоподібності
Капона, які в свою чергу краща, ніж оцінки
Блекмана-Тьюкі.
Семіінваріанти четвертого порядку задаються так:
Зокрема, діагональний зріз задається:
Якщо
w(n)
є гаусовським, то
Якщо
- i.i.d. негаусів, то
є
дельта-функцією в початку координат.
Зауважимо, що при
- гаусовому або i.i.d. негаусовому, схожий
до автокорреляційної послідовності
безшумного сигналу. Отже, всі аналізи,
засновані на автокорреляції переносяться
на кумулянти четвертого порядку.
Зокрема, розвиток спектральних оцінок:
«Власних векторів», Писаренка, ML-Capon,
AR, MUSIC,,
Мін-норми, і beamformer , які засновані на
статистиках другого порядку, також
можуть бути засновані на статистиках
четвертого порядку. Точно так само ми
можемо грунтувати ESPRIT на матриці
перехресних кумулянтів четвертого
порядку. Четвертого порядку статистики
найбільш корисні коли аддитивний шум
є вузькосмуговим шумом Гаусса.
harmest реалізує алгоритми для проблеми гармонійного пошуку:
оцінює спектр за використання власних векторів, MUSIC, Писаренка, ML, і AR
алгоритмів, заснованих на діагональному зрізі кумулянтів четвертого порядку.
doa реалізує алгоритми такої задачі: оцінює ангулярний спектр використовуючи власні вектори, MUSIC, Писаренка, ML-Capon, ML, і AR алгоритми, засновані на діагональному зрізі кумулянтів четвертого порядку. doa реалізує відповідні алгоритми
на основі статистик другого порядку, і реалізує ESPRIT.
Pxx=harmest(змінна,12,6,'unbiased',256,2);
function [Pxx,ar1,ar2] = harmest(y,maxlag,p_order,flag,nfft,norder)
%HARMEST Frequencies of harmonics in colored Gaussian noise.
% [Pxx,ar1,ar2] = harmest(y,maxlag,p_order,flag,nfft,norder)
% y - data matrix [nsamp x nrecs]
% maxlag - number of cumulant lags to compute [default = nsamp/12]
% p_order - order to use (dimension of signal subspace)
% user will be prompted if p_order <= 0
% flag - 'biased' or 'unbiased'
% nfft - fft length for spectra [default = 256]
% norder - cumulant order to use: 2 or 4 [default = 4]
%
% Pxx - a nfft x 7 matrix of spectral estimates
% ar1 - estimated parameters for the AR method.
% ar2 - estimated parameters for the min-norm method
%
% The seven columns of Pxx contain the spectral estimates based on
% the Eigenvector, Music, Pisarenko, ML, AR, periodogram methods,
% and the minimum-norm method.
[nsamp,nrecs] = size(y);
if (nsamp == 1) nsamp = nrecs; nrecs = 1; y = y(:); end
if (exist('p_order') ~=1) p_order = 0; end
if (exist('flag') ~= 1) flag = 'biased'; end
if (flag(1) ~= 'b') flag = 'unbiased'; end
if (exist('maxlag') ~= 1) maxlag = nsamp/12; end
if (exist('nfft') ~= 1) nfft = 256; end
if (exist('norder') ~= 1) norder = 4; end
if (norder ~= 2 & norder ~= 4)
error('cumulant order - norder - should be 2 or 4')
end
Pxx = zeros(nfft,7);
% ------------ estimate second/fourth-order cumulants --------------
if (norder == 4)
M = maxlag;
cum_4y = cumest(y,4,M,nsamp,0,flag,0,0);
cum_4y = (cum_4y(M+1:2*M+1) + conj(cum_4y(M+1:-1:1)) )/2;
cum_4y = cum_4y/cum_4y(1);
Amat = toeplitz(conj(cum_4y),cum_4y);
else
Amat = zeros(maxlag+1,maxlag+1);
ind = [0:-1:-maxlag];
for n=maxlag+1:nsamp
xf = y(n+ind,:);
xb = conj(flipud(xf));
Amat = Amat + xf * xf' + xb * xb';
end
mu = mean(mean(y));
Amat = Amat - mu*mu'; % remove mean
Amat = Amat / ( nrecs*(nsamp-maxlag) );
end
[U,S,V] = svd(Amat); sval = diag(S);
% ----------- how many harmonics ? -------------------------
hold off, clf,
set(gcf,'Name', ...
['Hosa HARMEST - cum-order=', int2str(norder)] )
ls = length(sval);
plot(1:ls, sval,'-', 1:ls,sval,'go'), grid on
title(['sval: cum-',int2str(norder)])
drawnow
p = p_order;
while (p <= 0 | p > ls )
p = input([' enter order to use [1,' int2str(ls) '] ---> ']);
if (isempty(p)) p = 0; end
end
% ---------- Noise subspace methods --------------
M = maxlag+1;
nvec = M - p; mfft = nfft/2;
wte = ones(nvec,1) ./ sval(p+1:M);
Pvm = V(:,p+1:M) * V(:,p+1:M)';
Pve = V(:,p+1:M) * diag(wte) * V(:,p+1:M)';
psum = zeros(nfft,2);
psum(1,1) = sum(diag(Pve));
psum(1,2) = sum(diag(Pvm));
for k=1:maxlag
psum(k+1,1) = sum(diag(Pve,k));
psum(nfft-k+1,1) = sum(diag(Pve,-k));
psum(k+1,2) = sum(diag(Pvm,k));
psum(nfft-k+1,2) = sum(diag(Pvm,-k));
end
Pxx(:,1:2) = ones(nfft,2) ./ real(fft(psum,nfft));
[u1,s1,v1] = svd(Amat(1:p+1,1:p+1)); v1 = v1(:,p+1);
Pxx(:,3) = ones(nfft,1) ./ abs(fft(conj(v1),nfft)).^2;
% ------------ signal subspace method -----------------------------
% mlcapon
for k=1:p
Pxx(:,4) = Pxx(:,4) + abs(fft(conj(V(:,k))/sqrt(sval(k)),nfft)) .^ 2;
end
% --------- AR method -----------------------------------------------
% --------- SVD low-rank approximation (a la Cadzow) ----------------
Amat = U(:,1:p) * diag(sval(1:p)) * (V(:,1:p))';
Ahat = [];
[m,n] = size(U);
for k=p+1:n
Ahat = [Ahat; Amat(:,k-p:k)];
end
% force unity modulus solution
avec = [1; -Ahat(:,2:p+1) \ Ahat(:,1)];
avec = conj(avec);
if (exist('debug') == 1)
ncol = floor((p+2)/2);
nflip = floor((p+1)/2);
Ahat(:,1:nflip) = Ahat(:,1:nflip) + Ahat(:,p+1:-1:p+2-nflip);
avec = Ahat(:,2:ncol) \ Ahat(:,1);
avec = [1; -avec];
avec = [avec; avec(nflip:-1:1)];
end
ar1 = avec;
Pxx(:,5) = ones(nfft,1) ./ abs(fft(avec,nfft)) .^2;
% ----------- The periodogram estimate ----------------------
ind = [1:nsamp]';
for k=1:nrecs
ys = y(ind);
ys = ys - mean(ys);
Yf = fft(ys,nfft) / nsamp;
Pxx(:,6) = Pxx(:,6) + Yf .* conj(Yf);
ind = ind + nsamp;
end
Pxx(:,6) = Pxx(:,6) / nrecs;
Pxx(1,6) = Pxx(2,6); % dynamic range problems, else
% ----------------- Minimum-norm method -------------------
gvec = U(1,1:p).';
gmat = U(2:length(sval),1:p);
ar2 = [1; - conj(gmat) * gvec / (1 - gvec' * gvec)];
Pxx(:,7) = fft(ar2, nfft);
Pxx(:,7) = ones(nfft,1) ./ ( Pxx(:,7) .* conj(Pxx(:,7)) ) ;
% ----------- Display estimates ---------------------
waxis = [-mfft:mfft-1]/nfft;
Pxx = Pxx([mfft+1:nfft,1:mfft],:);
% - scale to max abs of unity for plots only
spmax = max(Pxx);
spmax = ones(1,length(spmax)) ./ spmax;
clf,
subplot(421), plot(1:ls, sval,'-', 1:ls,sval,'g.'), grid on
title(['sval: cum-',int2str(norder)])
subplot(422), plot(waxis,10*log10(Pxx(:,6)*spmax(6))), title('pxx'),grid on
subplot(423), plot(waxis,10*log10(Pxx(:,1)*spmax(1))), ylabel('eig'),grid on
subplot(424), plot(waxis,10*log10(Pxx(:,2)*spmax(2))), ylabel('music'),grid on
subplot(425), plot(waxis,10*log10(Pxx(:,3)*spmax(3))), ylabel('pisar'),grid on
subplot(426), plot(waxis,10*log10(Pxx(:,4)*spmax(4))), ylabel('ml'),grid on
subplot(427), plot(waxis,10*log10(Pxx(:,5)*spmax(5))), ylabel('ar'),grid on
subplot(428), plot(waxis,10*log10(Pxx(:,7)*spmax(7))), ylabel('min-norm'),
grid on
return
Pxx=harmest(right,12,6,'unbiased',256,2);
Pxx=harmest(left,12,6,'unbiased',256,2);
Рис. 5 Сингулярні значення матриці кумулянтів та оцінка спектру (harmest)
Дані складаються з двох реальних гармонік однакової амплітуди, забруднені кольоровим гаусовим шумом з дисперсією 0.5; спектр шуму має полюс на 0,15 Гц, коефіцієнт загасання 0,9.