Окончательная добавка про рисование на спектре, просто "для полноты" предыдущего рассказа об этом:
- инопланетянский ответ на упоминавшееся выше <<послание "Вояджера">> (внимание, вопрос: что там? :) Для просмотра в упоминавшейся выше маткадной программке надо в ней выбрать значения Nfft=512 и Step=256.
Если исходная картинка цветная, то её следует редактором картинок сделать черно-белой: надо вывести в ноль параметр цветовой насыщенности. Файл с картинкой должен быть в формате bmp. Размер картинки в формате bmp по вертикали в пикселях надо обязательно сделать равным
двойке в целой степени. Размеры (обозначаю их как CxR) bmp-картинки будут важными параметрами:

- количество колонок, т.е. столбцов, это длина картинки по горизонтали в пикселях, и

- количество рядов, т.е. строк, это размер картинки по вертикали. Ниже для примера взята небольшая картинка, 356x256:
Десятый байт в заголовочной части bmp-файла указывает на смещение данных от начала файла. Обычно десятичное значение этого смещения равно

Каждый пиксель обычно описывается тремя байтами; из них будет нужен только один. Т.е. нужный нам одномерный массив данных

(однобайтовых, с целыми десятичными значениями от

до

выбирается из прочитанного Маткадом bmp-файла как последовательность байтов с номерами

где
Из этого массива строится двумерная таблица,

где

это номер ряда в картинке,

- номер столбца. В ней элементы каждого столбца интерпретируются как результат

дискретного преобразования Фурье (Complex Fast Fourier Transform, CFFT) выборки длиной

комплексного аудио сигнала

где

и

это стерео-каналы (в цифровой радиотехнике

и

интерпретируются как "синфазная" (inphase) и "квадратурная" (quadrature) составляющие двухканального iq-сигнала). Вернее, числа из

интерпретируем как модули

комплексных чисел

Предполагаем, что выборки берутся с перекрытием, т.е., например, с шагом

при длине выборок

В Маткаде операция

соответствует формуле:

Обратное преобразование

это

Элементы выходного массива операции CFFT в Маткаде пронумерованы так: сначала, при

идёт спектр с возрастающими от нуля положительными частотами, а дальнейшим номерам

соответствуют возрастающие отрицательные частоты, от (почти) с минусом половины частоты дискретизации до нулевой частоты. Чтобы получить обычную шкалу возрастающих частот, с нумерацией подряд от "левого конца" спектра до "правого конца" (т.е. "сверху вниз" на спектрограмме) с нулевой частотой по центру, приходится делать перенумерацию выходного массива. Перед операцией ICFFT надо аналогичным образом перенумеровывать входной массив.
Заодно пояснение к операции, изображаемой в Маткаде стрелкой над формулой: это просто краткая запись покомпонентного действия с массивом. В упоминавшейся программке вычисления спектрограммы можно две строки со стрелками заменить двумя обычными строками:

и

Значения в каждом столбце из

это

но для ICFFT нужен массив

Значения

определяются путём шаманства. В приведённой ниже программке создания wav-файла фаза вычисляется с помощью двух параметров:

задаёт долю фазы, изменяющуюся от отсчета к отсчету регулярно, а

задаёт "шум" - часть фазы, вычисляемую через псевдослучайную величину

со значениями, равномерно распределёнными от

до

При

(шума нет) картинка-спектрограмма получается неплохой, однако - лишь при согласованном выборе параметров создания wav-файла (

и вычисления спектрограммы (надо выбирать

при этом, увы, звук получается трескучий. При

(фаза содержит только шум) звук более интересный, но картинка текстурируется шумом, фотографии портятся; такой режим подходит для символических изображений.
В общем, в этом деле ещё много места для шаманства и экспериментов.
Окончание (вся программка на одном рисунке не уместилась):

В примере частота дискретизации (sample rate) аудио выбрана равной 4000 Гц. Чем она выше, тем более высокочастотный звук воспроизведётся плеером, если плеер вообще способен проигрывать аудио с частотой дискретизации, отличной от стандартной 44100 Гц, и тем меньше продлится звучание wav-файла. В данном примере, с

вот результат (ссылка на wav-файл):
https://drive.google.com/file/d/1tC719_ ... bQNi3Jjtr/Упоминавшаяся выше маткадная программка вычисления спектрограммы с параметрами

выдаёт для сигнала из этого wav-файла такую спектрограмму:
Если при синтезе wav-файла из той же исходной картинки "356x256.bmp" выбрать

то звук получается немножко страшнее (ссылка на wav-файл):
https://drive.google.com/file/d/1kY4Xoc ... UxIkduPKF/При этом и спектрограмма в Маткаде получается страшненькая:

Как видим, шум испортил фотографии; но для одних только букв или мультяшных изображений результат с шумом был бы приемлемым - они смотрелись бы всё ещё разборчиво. (В любом случае качество картинки-спектрограммы повышается при выборе хорошей исходной bmp-картинки большего размера, например,
