我对Matlab很新,我正在尝试生成一个.wav文件,但我不断收到不支持的频道数错误。这是我的代码。
TTL = zeros(2, 2205);
TTL(1,1:2205) = 2;
audiowrite('hereitis.wav', TTL, 44100, 'BitsPerSample', 16);
我很确定我的问题在于TTL,因为我过去曾使用过一次或两次Matlab来生成.wav文件。我想要做的是使用Matlab数据采集工具箱保存另一个人通过模拟传输的声音。因为我能够使用Sound(TTL,44100)播放声音,所以我认为我离标记太远了;
提前致谢。
答案 0 :(得分:4)
这里有两个问题。
首先,正如help audiowrite
所说:
立体声数据应指定为具有两列的矩阵。
但是你有两行,所以你需要改变它。如果您运行更改的代码,您将收到警告:
Warning: Data clipped when writing file.
>In audiowrite>clipInputData at 390
In audiowrite at 166
这意味着您需要为信号使用正确的数据类型(在本例中为int16)。因此,经过这些修改,我们来到这段代码:
TTL = int16(zeros(2205, 2));
TTL(1:2205, 1) = 2;
audiowrite('hereitis.wav', TTL, 44100, 'BitsPerSample', 16);