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


