2013-04-07 58 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

相關問題