Я пытаюсь откалибровать ультразвуковой громкоговоритель, чтобы излучать предсказуемые сигналы, но, увы, я продолжаю сталкиваться с проблемами, вероятно, из-за отсутствия DSP-фу.
Немного фона
Я хочу иметь возможность воспроизводить звуки как можно ближе к откалиброванной записи, которая у меня есть. Насколько я понимаю теорию, мне нужно найти передаточную функцию динамиков и деконволюции сигналов, которые я хочу испустить с ее помощью. Как то так (в частотной области):
X -> H -> XH
Где Xэто излучаемый сигнал Hявляется передаточная функция колонки и XHэто Xраз H. Разделение ( ./) теперь должно дать мне H.
Теперь, чтобы испустить калиброванный сигнал, его следует разделить на H:
X/H -> H -> X
Что сделано
- Размещен динамик и калиброванный микрофон на расстоянии 1 м на штативах.
- Записано 30+ линейных разверток 150 кГц-20 кГц, длиной 20 мс и записано при 500 кС / с.
- Выровненные и усредненные сигналы с помощью сценария Matlab / Octave ниже, под сценарием можно увидеть полученный сигнал.
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);

Фурье преобразился
Xи,XHвыполнив вычисления, упомянутые выше, результат выглядит правдоподобно. Ниже приведен нормализованный графикH(фиолетовый) иX/H(зеленый).
Сюжет был усечен до соответствующих частот.
Пожалуйста, дайте мне знать, если я поступаю неправильно.
Мой вопрос
После вычисления X/Hмне нужно преобразовать его обратно во временную область, я предположил, что это будет просто ifft(X./H)и wavwrite, но все мои попытки до сих пор не дали никакого правдоподобного ответа. Вектор частоты Hf, Hи Xможет быть найден здесь в mat7 двоичного формата.
Может быть, я просто устал, и здесь есть простое решение, но сейчас я его не вижу. Любая помощь / совет очень ценится.


