TOPIC: Преобразование Фурье - точное определение частоты сигнала и выделение нот
Преобразование Фурье - точное определение частоты сигнала и выделение нот
05 Июнь 2017 05:04 #181
Vladimirovich wrote:
Викторович wrote:
поскольку и ляпа с оцифровкой более чем достаточно....
Сказано двоичная кодировка цифрового сигнала - значит двоичная кодировка цифрового сигнала, а не почти аналоговый сигнал.
Какой такой ляп с оцифровкой? Викторович wrote:
Потому, что я практик. И это моя работа.
Вот первый шаг оцифровки
Затем каждое значение записывается в двоичной системе.
Была бы троичная, если б наши победили (компьютер Сетунь слышали, или дальше паяльника ничего не видите? )
Записали бы в троичной
Как видно сигнал ПОЧТИ АНАЛОГОВЫЙ после оцифровки. Не видно?
Что с ним происходит дальше, уже вопрос следующий, WAV ли не WAV, MP3 или РСМ ....
Там начинаются алгоритмы сжатия. И т.д.
Не надо тут понты разводить, хорошо?
Небось уже в эру цифровой записи родились, и не можете помнить, что
Учитесь отделять мух от котлет
Что в нынешний век известно о фотонно-временной и фононно-временной кодировках ?
Преобразование Фурье - точное определение частоты сигнала и выделение нот
11 Июнь 2017 17:09 #182
Очень даже многоничего хотя если записывать спектры в вав формате то и не нужно оправдываться за искажения
А если даже орГОНатор оргонной энергии засунуть в лазер то енто новая 2000$ может стать панацея от всех болезний
Учись мирошниченко как надо бизнес лабать на таких как тЫ
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 10:43 #183
вот сонограмма матрицы Гаряева
как видно свист это АМ демодуляция ШИМА блока питания
на графике хорошо виден низкочастотный сигнал который идет сразу с фотодиодов без шим модуляции
его и нужно переносить в музыку
только нет звукового редактора который показывает спектр сигнала в виде комплексных чисел и спектр фаз
придется делать программу и использовать алгоритмы БПФ
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 10:45 #184
алгоритм быстрого преобразования Фурье, который минимизирует число математических операций, необходимых для его вычисления. Единственное требование алгоритма состоит в том, чтобы число отсчётов было кратно степени двойки (256, 512, 1024 и так далее).
Ниже его классическая рекурсивная реализация на языке C#.
using System;
using System.Numerics;
namespace Rainbow
{
public static class Butterfly
{
public const double SinglePi = Math.PI;
public const double DoublePi = 2*Math.PI;
public static Complex[] DecimationInTime(Complex[] frame, bool direct)
{
if (frame.Length == 1) return frame;
var frameHalfSize = frame.Length » 1; // frame.Length/2
var frameFullSize = frame.Length;
var frameOdd = new Complex[frameHalfSize];
var frameEven = new Complex[frameHalfSize];
for (var i = 0; i < frameHalfSize; i++)
{
var j = i « 1; // i = 2*j;
frameOdd = frame[j + 1];
frameEven = frame[j];
}
var spectrumOdd = DecimationInTime(frameOdd, direct);
var spectrumEven = DecimationInTime(frameEven, direct);
var arg = direct ? -DoublePi/frameFullSize : DoublePi/frameFullSize;
var omegaPowBase = new Complex(Math.Cos(arg), Math.Sin(arg));
var omega = Complex.One;
var spectrum = new Complex[frameFullSize];
public static Complex[] DecimationInFrequency(Complex[] frame, bool direct)
{
if (frame.Length == 1) return frame;
var halfSampleSize = frame.Length » 1; // frame.Length/2
var fullSampleSize = frame.Length;
var arg = direct ? -DoublePi/fullSampleSize : DoublePi/fullSampleSize;
var omegaPowBase = new Complex(Math.Cos(arg), Math.Sin(arg));
var omega = Complex.One;
var spectrum = new Complex[fullSampleSize];
var yTop = new Complex[halfSampleSize];
var yBottom = new Complex[halfSampleSize];
for (var i = 0; i < halfSampleSize; i++)
{
yTop = spectrum;
yBottom = spectrum;
}
yTop = DecimationInFrequency(yTop, direct);
yBottom = DecimationInFrequency(yBottom, direct);
for (var i = 0; i < halfSampleSize; i++)
{
var j = i « 1; // i = 2*j;
spectrum[j] = yTop;
spectrum[j + 1] = yBottom;
}
return spectrum;
}
}
}
Существует две разновидности алгоритма БПФ — с прореживанием по времени и по частоте, но оба дают идентичный результат. Функции принимают массив комплексных чисел, заполненный реальными значениями амплитуд сигнала во временной области, а после своего выполнения возвращают массив комплексных чисел, содержащий информацию об амплитудном и фазовом спектрах. Стоит помнить, что реальная и мнимая части комплексного числа — это далеко не то же самое, что его амплитуда и фаза!
Результирующий массив комплексных чисел заполнен полезной информацией ровно на половину, другая половина является лишь зеркальным отражением первой и спокойно может быть исключена из рассмотрения. Если вдуматься, то этот момент хорошо иллюстрирует теорему Котельникова-Найквиста-Шеннона, о том, что частота дискретизации должна быть не меньше максимальной удвоенной частоты сигнала…
Также существует разновидность алгоритма БПФ без рекурсии по Кули-Тьюки, которая часто применяется на практике, но она чуть более сложна для восприятия.
Сразу после вычисления преобразования Фурье удобно нормализовать амплитудный спектр:
var spectrum = Butterfly.DecimationInTime(frame, true);
for (var i = 0; i < frameSize; i++)
{
spectrum /= frameSize;
}
Это приведёт к тому, что величина значений амплитуды получится одного порядка не зависимо от размеров сэмпла.
Вычислив амплитудный и частотный спектры, легко производить обработку сигнала, например, применять частотную фильтрацию или производить сжатие. По сути, таким образом можно сделать эквалайзер: выполнив прямое преобразование Фурье, легко увеличить или уменьшить амплитуду определённой области частот, после чего выполнить обратное преобразование Фурье (хотя работа настоящих эквалайзеров обычно основана на другом принципе — фазовом сдвиге сигнала). Да и сжать сигнал очень просто — нужно всего лишь сделать словарь, где ключом является частота, а значением соответствующее комплексное число. В словарь нужно занести лишь те частоты, амплитуда сигнала на которых превышает какой-то минимальный порог. Информация о «тихих» частотах, не слышимых ухом, будет потеряна, но получится ощутимое сжатие при сохранении приемлемого качества звучания. Отчасти этот принцип лежит в основе многих кодеков.
4. Точное определение частоты
Дискретное преобразование Фурье даёт нам дискретный спектр, где каждое значение амплитуды отстоит от соседних на равные промежутки по частоте. И если частота в сигнале кратна шагу равному (частота дискретизации)/(количество отсчётов), то мы получим выраженный остроконечный пик, но если частота сигнала лежит где-то между границами шага ближе к середине у нас выйдет пик со «срезанной» вершиной и нам будет затруднительно сказать, что же там за частота. Очень может быть что в сигнале присутствуют две частоты лежащие рядом друг с другом. В этом и заключается ограничение разрешения по частоте. Так же как на фотоснимке с низким разрешением мелкие предметы склеиваются и становятся неразличимы, так же и тонкие детали спектра могут теряться.
Но частоты музыкальных нот лежат далеко не на сетке шагов преобразования Фурье, а для повседневных задач настройки музыкальных инструментов и распознавания нот необходимо знать именно точную частоту. Более того, на низких октавах при разрешении от 1024 отсчётов и ниже сетка частот Фурье становится настолько редкой, что попросту на одном шаге начинают умещаться несколько нот и определить какая же на самом деле из них играет становится фактически невозможно.
Так вот, вектор на комплесной плоскости определяется действительной координатой a1 и мнимой координатой a2. Или длиной (это у нас амплитуда Am) и углом Пси (фаза).
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 11:56 #187
если сделать спектр матрицы в виде комплексных чисел это будут точки на круге поделенные на 4 сектора
их можно легко перевести в ноты или кодоны днк
например берется круг делится на 12 секторов и в какой сектор попадает комплексное число частоты такой ноте это и отвечает от 1 до 12, а каждая нота отвечает названию кодона и месту его в аминокислоте
таким образом матрицу можно разложить в текстовый файл и прогнать по базе данных днк проверить на совпадение последовательностей
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 12:18 #188
hologrammatrix wrote:
Ниже его классическая рекурсивная реализация на языке C#.
Для кода имеет смысл обратить внимание на тэг code - кнопочка возле цитирования- он сохраняет отступы в тексте программы и делает текст более читабельным.
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 13:21 #195
hologrammatrix wrote:
если сделать спектр матрицы в виде комплексных чисел это будут точки на круге поделенные на 4 сектора
их можно легко перевести в ноты или кодоны днк
например берется круг делится на 12 секторов и в какой сектор попадает комплексное число частоты такой ноте это и отвечает от 1 до 12, а каждая нота отвечает названию кодона и месту его в аминокислоте
таким образом матрицу можно разложить в текстовый файл и прогнать по базе данных днк проверить на совпадение последовательностей
Препарат ДНК, при получении мШЭИ ДНК, считывается ЛГН-303 целиком, а не по отдельным нуклеотидам, растянутым в одну цепочку. В частности, поэтому мы не использовали препараты высокополимерной тотальной ДНК. Там хаос фрагментов ДНК разной длины. Брали кроткие отрезки одной длины, например, 547 пар нуклеотидов известной плазмиды. Но и в таких препаратах расположение отрезков хаотично, они не выстраиваются в одну цепочку. И тем не менее мШЭИ таких отрезков ДНК, введенное в воду даёт точные копии вещественных отрезков ДНК в ПЦР системе. Это тоже пока не объяснимо. Как необъяснимо каким образом вообще ДНК записана в мШЭИ. Это, наверное, главная задача.
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 13:44 #201
Так я не понял - когда состоится первая прямая межконтинентальная спутниковая трансляция МШЭи-спектра кокаина с плантаций в Колумбии ?
как только агент с Бразилии закинет туда квантово запутанный чип и откроется временно пространственный туннель через который будет все телепортироватся.
Препарат ДНК, при получении мШЭИ ДНК, считывается ЛГН-303 целиком, а не по отдельным нуклеотидам, растянутым в одну цепочку. В частности, поэтому мы не использовали препараты высокополимерной тотальной ДНК. Т
биолог сказал что вы использовали немытые пробирки
а что там считывается или нет я сам увижу когда внесу текстовые файлы в поле поиска генома человека
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 13:52 #203
hologrammatrix wrote:
биолог сказал что вы использовали немытые пробирки
а что там считывается или нет я сам увижу когда внесу текстовые файлы в поле поиска генома человека
Мало-ли что "биолог" скажет. Для таких существуют положительные, отрицательные и иные контроли, которые у нас безупречны. Протокол экспериментов выкладывал.
Преобразование Фурье - точное определение частоты сигнала и выделение нот
17 Июнь 2017 15:46 #209
Vladimirovich wrote:
На первой диаграмме не программа, а какая то бня
На второй действительно нечто на Delphi в варианте для лохов. Полный примитив
Это главная форма какой-то проги и скриншот среды разработки с ней же на delphi7. Было бы наверное интересней ее код поглядеть вместо скриншотов.
Кстати я слышал, что delphi7 до сих пор популярен в научных кругах. Вне науки его мало кто использует, т.к. он не работает на операционках после Win XP.