Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BCI interfaces.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.18 Mб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]