Уважаемый, я столкнулся с проблемой, когда пытался использовать deconv для извлечения импульсного отклика из однобитового отклика (импульсный отклик). Вот это детали. У меня импульсный отклик, и его форма волны выглядит следующим образом:
Я мог бы использовать conv для свертки между импульсным откликом выше и последовательностью битов (например, 16 бит 0, 1 бит 1 и 16 бит 0, обратите внимание, что это 32 выборки на пользовательский интерфейс, поэтому 33 бита здесь означают 33 * 32 точки), чтобы получить однобитовую форму сигнала ответа следующим образом:
imp = load("imp.txt") % impulse response
sb_wf = [repelem(0.001, 512),repelem(1,32),repelem(0.001,512)] % bit sequence waveform, 16 bits 0, 1 bit 1 and 16 bits 0
cv = conv(sb_wf, imp(:,2)) % convolution between imp and sb_wf -> single bit response
И форма волны свертки между ними выглядит следующим образом:
Теперь здесь проблема, давайте предположим, что я не знаю, что такое импульсный отклик на первом месте, но у меня есть однобитовый отклик и битовая последовательность, я хочу получить результат deconv, т.е. получить импульсный отклик из однобитового отклика и битовая последовательность. Я понимаю, что мог бы использовать deconv напрямую, но проблема здесь в том, что полученный однобитовый ответ может содержать некоторую неизвестную задержку, что означает неизвестное смещение между битовой последовательностью и однобитовым ответом. В1: Как мне преодолеть эту неизвестную фазу между однобитовым сигналом и битовой последовательностью? Есть ли хорошая идея для этого? Я просто делаю быстрый эксперимент, например, я добавил смещение для формы сигнала отклика одного бита выше, чтобы имитировать c неизвестную задержку, например, 32 выборки, а также я добавил такую же задержку в битах форма сигнала ответа, затем используйте deconv, но я обнаружил, что результат явно не импульсный отклик:
cv_shift = circshift(cv, 32); % delay 'cv', i.e. single bit response 32 samples
sb_shift = circshift(sb_wf, 32); % delay 'sb_wf', i.e. bit sequence waveform 32 samples
[q,r] = deconv(cv_shift, sb_shift);
Q2: Почему я не могу получить исходный импульсный отклик даже если я поместил одинаковую задержку в битовую последовательность и однобитовый ответ?
Большое спасибо за вашу большую помощь.
С уважением,
Wangyang