Próbuję skalibrować głośnik ultradźwiękowy w celu emitowania przewidywalnych sygnałów, ale niestety ciągle mam problemy, prawdopodobnie z powodu braku DSP-fu.
Trochę tła
Chcę móc odtwarzać dźwięki jak najbliżej skalibrowanego nagrania, które mam. O ile rozumiem teorię, muszę znaleźć funkcję przenoszenia głośników i dekonwolować sygnały, które chcę z nią emitować. Coś takiego (w dziedzinie częstotliwości):
X -> H -> XH
Gdzie X
jest emitowany sygnał H
jest funkcja przenoszenia głośników i XH
to X
czasy H
. Podział ( ./
) powinien mi teraz dać H
.
Teraz, aby wyemitować skalibrowany sygnał, należy go podzielić przez H
:
X/H -> H -> X
Co zostało zrobione
- Umieszczony głośnik i skalibrowany mikrofon w odległości 1 m od statywów.
- Nagrano ponad 30 liniowych przebiegów 150 kHz-20 kHz o długości 20 ms i zarejestrowano przy 500 KS / s.
- Wyrównane i uśrednione sygnały za pomocą skryptu Matlab / Octave poniżej, pod skryptem można zobaczyć wynikowy sygnał.
files = dir('Mandag*');
rng = [1.5e6, 1.52e6];
[X, fs] = wavread(files(1).name, rng);
X = X(:,1);
for i=2:length(files)
[Y, fs] = wavread(files(i).name, rng);
sig = Y(:,1);
[x, off] = max(xcorr(X', sig'));
off = length(X) - off;
if(off < 0)
sig = [zeros(1, -off), sig(1:end+off)'];
elseif (off > 0)
sig = [sig(off:end)', zeros(1, off-1)];
end
X = X + sig';
end
X = X/length(files);
Fourier przekształcił się
X
iXH
wykonał wspomniane powyżej obliczenia, wynik wydaje się wiarygodny. Poniżej znajduje się znormalizowany wykresH
(fioletowy) iX/H
(zielony).
Fabuła została obcięta do odpowiednich częstotliwości.
Daj mi znać, jeśli podejdę do tego w niewłaściwy sposób.
Moje pytanie
Po obliczeniu X/H
muszę go przekształcić z powrotem w dziedzinę czasu, przyjąłem, że będzie to proste ifft(X./H)
i wavwrite
, ale wszystkie moje dotychczasowe próby nie dały żadnej wiarygodnej odpowiedzi. A wektor częstotliwości Hf
, H
i X
można znaleźć tutaj w formacie mat7-binarny.
Może jestem po prostu zmęczony i istnieje tutaj proste rozwiązanie, ale w tej chwili go nie widzę. Każda pomoc / rada jest bardzo mile widziana.