[an error occurred while processing this directive]
Вот. Накидал скрипт (+)
(«Телесистемы»: «Конференция «Цифровые сигнальные процессоры (DSP) и их применение»»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 23 апреля 2003 г. 13:54
В ответ на: Вопрос по измерению частоты отправлено Кн 23 апреля 2003 г. 10:53

Результат при SNR=-20 (20 дб), и такой помехе в пол-амплитуды полезного сигнала на 50 герц - макс. ошибка 0.0028 герц.
Тестировалось в 256 случайных точках в диапазоне 200...300 герц.
шум бэлий. Длительность измерения - 2 секунды (16384 точек с дискретностью 8 кГц).



function [err,freq] = freqmeas (F,SNR)

Fs = 8000;

N=16384;

t = (0:N-1);
ph=rand(1,2)*2*pi;
% signal
s = sin((2*pi*(F/Fs).*t)+ph(1));
% 50 Hz, amp. 1/2 of signal
ss = 0.5.*sin(2*pi*(50/Fs).*t+ph(2));
% noise
n = (10^(SNR/20)).*(2*rand(1,N)-1);
s = s+n+ss;

w = hanning(N)';
s = s .* w;

spectr = (-1/N)*abs(fft(s));
spectr = spectr(1:N/2);

fr = (0:N/2-1) .* (Fs / N);
sp = spapi(7,fr,spectr);

[c,i] = min(spectr);

fq = (i-1)*(Fs / N);
resol = Fs/N;

[dummy,freq] = fnmin(sp,[(fq-resol*2) (fq+resol*2) ]);

err = abs(F - freq);

А вот этим тестировалось


SNR = -20;
N=256;

F = rand(1,N).*(300-200)+200;

for i = 1:N
[e(i),f(i)] = freqmeas(F(i),SNR);
e(i)
end


Составить ответ ||| Конференция ||| Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов ||| Конференция ||| Архив ||| Главная страница ||| Содержание

E-mail: info@telesys.ru