Я пытаюсь откалибровать ультразвуковой громкоговоритель, чтобы излучать предсказуемые сигналы, но, увы, я продолжаю сталкиваться с проблемами, вероятно, из-за отсутствия 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 двоичного формата.
Может быть, я просто устал, и здесь есть простое решение, но сейчас я его не вижу. Любая помощь / совет очень ценится.