创建并破译摩尔斯电码信号
创建摩尔斯电码词典.
显示完整的 Wolfram 语言输入
Out[1]=
![](assets.zh/create-and-decode-a-morse-code-signal/O_42.png)
创建一个函数,使用词典将信息翻译为音频信号.
In[2]:=
![Click for copyable input](assets.zh/create-and-decode-a-morse-code-signal/In_97.png)
createMorseSignal[s_String, t_] :=
Module[{events =
Characters[StringReplace[ToLowerCase[s], Normal@replacements]],
ts, amps},
ts = TimeSeries[ToExpression@events, {0, (Length[events] - 1)*t, t}];
amps = AudioGenerator[ts, SampleRate -> 1000];
AudioGenerator[{"Sin", 800}, Duration@amps,
SampleRate -> 8000] amps
]
将字符串编码为音频信号.
In[3]:=
![Click for copyable input](assets.zh/create-and-decode-a-morse-code-signal/In_98.png)
morse = createMorseSignal["hello world", .07]
在对其时间不做任何推测的条件下,破译摩尔斯信号.
In[4]:=
![Click for copyable input](assets.zh/create-and-decode-a-morse-code-signal/In_99.png)
inversecode = AssociationThread[Values[code], Keys[code]]
Out[4]=
![](assets.zh/create-and-decode-a-morse-code-signal/O_43.png)
显示完整的 Wolfram 语言输入
In[6]:=
![Click for copyable input](assets.zh/create-and-decode-a-morse-code-signal/In_101.png)
decoded = decodeMorseSignal[morse]
Out[6]=
![](assets.zh/create-and-decode-a-morse-code-signal/O_44.png)
In[7]:=
![Click for copyable input](assets.zh/create-and-decode-a-morse-code-signal/In_102.png)
StringJoin[decoded /. inversecode]
Out[7]=
![](assets.zh/create-and-decode-a-morse-code-signal/O_45.png)