我需要在MATLAB上设计一个可以创建声音的程序。
但是,我必须将音调彼此异相发送。 I.E如果右耳正在接收音调,从现在起0.5ms后左耳应接收另一种音调。因此,两个音调将大致相差180度。
所以我的问题是;如何编程使得音调首先传递到右耳然后传递到左耳。
是否有特殊的MATLAB命令?
注意:音调为1000Hz频率。
谢谢。
答案 0 :(得分:2)
wavplay是一个相当古老的功能。现代音频播放器和编写器方法假设您的数据是二维数组,其中第一行或第一列是左声道,第二行是右声道。
因此,例如,您可以创建一个1秒,1000 Hz的音调,以44.1 kHz采样:
t = (0:44100)'./44100;
y = sin(1000 * 2 * pi * t);
然后您可以在MATLAB中以单声道
播放它player = audioplayer(y, 44100);
player.play();
或将其用作左声道(右侧切换y和0(...)的顺序)
player = audioplayer([y, zeros(size(y))], 44100);
player.play();
或在每个频道播放反向
player = audioplayer([y, -y], 44100);
player.play();
要改为保存到文件并在外部播放(或稍后再读回MATLAB),audiowrite函数需要相同的y和采样率参数。
audiowrite('C:\tone.wav', [y -y], 44100);