0

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

但是,我必须使音调彼此异相。IE 如果右耳现在正在接收音调,那么从现在起 0.5ms 左耳应该会收到另一个音调。因此,这两种音调的相位相差大约 180 度。

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

有专门的 MATLAB 命令吗?

注:音调为 1000Hz 频率。

谢谢你。

4

1 回答 1

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 和 zeros(...) 的顺序切换为右声道)

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);
于 2013-07-08T22:21:22.947 回答