Обратная спектрограмма а-ля Aphex Twin в MATLAB

руководство Python говорит следующее [приблизительно 110]:

Возврат "идентификационные данные'' объекта. Это - целое число (или длинное целое), который, как гарантируют, будет уникальным и постоянным для этого объекта в течение его времени жизни. Два объекта с неперекрывающимся временем жизни могут иметь тот же идентификатор () значение. (Примечание реализации: это - адрес объекта.)

Так в CPython, это будет адресом объекта. Никакая такая гарантия любого другого интерпретатора Python, все же.

Примечание, что, если Вы пишете расширение C, у Вас есть полный доступ к внутренностям интерпретатора Python, включая доступ к адресам объектов непосредственно.

8
задан Scott 5 August 2009 в 04:36
поделиться

2 ответа

Здесь есть несколько небольших заблуждений.

Я расскажу о проблемах в порядке возникновения, а не серьезности:

1) Постепенная ошибка при вычислении SpectrogramWindow (image)

Первая запись массива должна быть составляющей 0 Гц, следующая - N Гц. Последний элемент массива должен быть составляющей -N Гц. Однако вы рассчитали 0 Гц.

Я не уверен в синтаксисе Matlab, но если вы перевернете изображение, как есть, а затем удалите верхнюю и нижнюю строки перед добавлением его к оригиналу, вы должны быть настроены.

В качестве альтернативы, вы можете рассмотреть НЕ добавление изображения к самому себе, а после извлечения SpectrogramWindow из изображения применение некоторой функции, чтобы сделать его эрмитово симметричным.

2) Взять абс из IFT. Не нужно. Не делайте этого.

Что вы получаете от iFFT, если iFFT получает правильный ввод, это полностью реально.

Вы видите комплексные значения, потому что ввод НЕ ДЕЙСТВИТЕЛЬНО эрмитово симметричный, как описано выше. Никогда не используйте Abs (). Если вы должны обмануть, извлеките действительную часть, которая не будет складываться в мусор из мнимого компонента.

3) Вы выбрасываете вторую половину сигнала.

Как только вы получаете результат от iFFT, который представляет сигнал, о котором вы просили. Не думайте об этом с точки зрения частот, теперь это временной ряд аудио. Сохраните все это.

Вот как я это вижу:

spectrogramWindow = image(:, i);
spectrogramWindow = [spectrogramWindow;reverse(spectrogramWindow(skip first and last))]
signalWindow = ifft(spectrogramWindow);
signal = [signal; signalWindow];
6
ответ дан 5 December 2019 в 21:20
поделиться

Просто исследовал то же самое и нашел этот скрипт на Perl. Подумал, вам может понравиться ссылка.

http://devrand.org/show_item.html?item=64&page=Project

1
ответ дан 5 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: