2013-04-07 93 views
0

我试图做一个MATLAB程序转换使用quadrature amplitude modulation一个输入128位数据(QAM,功能qammod):如何在MATLAB中将信号转换为声音?

M = 16; 
x = randint(5000, 1, M); 
y = modulate(modem.qammod(M), x); 

但是当我尝试使用声音(Y)播放调制信号命令,它不允许我这样做。

我试图通过做real(y)来使它工作。它可以播放,但数据丢失。我如何在保留数据的同时让人们听到这些数据?

我认为这是可能的,因为在过去,人们通过电话线访问互联网,在电话线上数字数据可以转换为声音信号。

+0

通过“不丢失数据”我的意思是如果声音信号保存在一个wav文件中,它可以播放,但它也可以解调回它的原始数据 – 2013-04-07 19:40:27

+0

应该有什么评论(由OP ):“这个问题应该合并到这个问题中* [载波调制和解调中的低通滤波器](http://stackoverflow.com/questions/15890216/low-pass-filter-in-carrier-modulation-and-解调)*感谢大家的关注“ – 2013-12-27 23:46:40

回答

0

您可以使用abs(y)来代替同相分量和正交分量,而不是仅使用同相分量与real(y)。但是,我会为每个16个符号分配16个不同的频率,并执行类似于FM(频率调制)的操作。

+0

谢谢,但在abs(y)之后,我仍然可以对结果进行解调并获得原始输入吗? – 2013-04-07 21:23:11

+0

如果你使用abs(y),显然你不能恢复信号(只有复数的幅度)。 我建议你做某种频率调制,将每个符号分配给不同的频率/音调。然后,为特定时间段内的每个符号生成一个音调(频率)并添加它们。您可以通过这种简单的方法恢复消息。如果持续时间足够长,您还可以通过适当的频率选择来区分符号。 另外,我可能会在几周内写出一个MATLAB代码,因为我有一个类似的项目。 – Berk 2013-04-09 15:00:20

相关问题