Язык Wolfram Language

Вычислительное аудио

AM радио

Начнем с сигнала с ограниченной полосой пропускания.

In[1]:=
Click for copyable input
a = BandpassFilter[ AudioNormalize@ AudioResample[Import["ExampleData/rule30.wav"], 96000], {Quantity[ 10, "Hertz"], Quantity[5000, "Hertz"]}, 201]
Out[1]=
In[2]:=
Click for copyable input
Periodogram[a, 2000, ImageSize -> Small, PlotRange -> {{0, 10000}, All}]
Out[2]=

Смодулируем амплитуду с синусоидой на 22050 Гц для сигнала в высоком конце спектра. Результат должен быть вне диапазона слышимости для большинства людей.

In[3]:=
Click for copyable input
amsignal = ((.5 + a) AudioGenerator[{"Sin", Quantity[22050, "Hertz"]}, Duration@a])/2
Out[3]=
In[4]:=
Click for copyable input
Periodogram[amsignal, 2200, ImageSize -> Small]
Out[4]=

Демодулируем сигнал АМ путем умножения результата на другую синусоиду на 22,050 Гц с той же фазой.

In[5]:=
Click for copyable input
result = BandpassFilter[ amsignal*AudioGenerator[{"Sin", Quantity[22050, "Hertz"]}, Duration@amsignal], {Quantity[100, "Hertz"], Quantity[5000, "Hertz"]}, 201]
Out[5]=

Воспользуемся нелинейным фильтром для демодуляции сигнала AM.

In[6]:=
Click for copyable input
BandpassFilter[# - Mean@# &@ MaxFilter[amsignal, 4], {Quantity[100, "Hertz"], Quantity[5000, "Hertz"]}, 201]
Out[6]=

Родственные примеры

de en es fr ja ko pt-br zh