仅向耳机的一侧发送音调

时间:2013-07-08 16:36:36

标签: matlab audio signal-processing

我需要在MATLAB上设计一个可以创建声音的程序。

但是,我必须将音调彼此异相发送。 I.E如果右耳正在接收音调,从现在起0.5ms后左耳应接收另一种音调。因此,两个音调将大致相差180度。

所以我的问题是;如何编程使得音调首先传递到右耳然后传递到左耳。

是否有特殊的MATLAB命令?

注意:音调为1000Hz频率。

谢谢。

1 个答案:

答案 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);