Matlab每秒发出声音

Matlab每秒发出声音,matlab,Matlab,我已经完成了一个函数playSound(f),它看起来像这样: function playSound(f) fs = 44100; t = 0:1/fs:1; y = sin(2.*pi.*f.*t); sound(y,fs,16); end 我在另一个函数中使用此函数,代码如下: while i <= y b = bin2dec(bits(i:i+k-1)); freq = 2000-frequencyInterval+b*del

我已经完成了一个函数
playSound(f)
,它看起来像这样:

function playSound(f)

    fs = 44100;
    t = 0:1/fs:1;

    y = sin(2.*pi.*f.*t);

    sound(y,fs,16);

end
我在另一个函数中使用此函数,代码如下:

while i <= y
    b = bin2dec(bits(i:i+k-1));
    freq = 2000-frequencyInterval+b*deltaFreq;
    playSound(freq);
    pause(1);
    i = i + k;
end

当我优雅地播放声音时,需要一些低级访问和缓冲,等等。Matlab的
sound()
函数不提供这种访问,不幸的是,它不会做您想做的事情。然而,如果你有一个最新的Matlab,你会发现
audioplayer
做你想做的事,这正是它设计的角色。由于需要对您的声音硬件进行“良好的操作”,因此您必须投入更多的时间使其正常工作


从“doc audioplayer”开始。

Matlab pause不提供毫秒精度,即使通过其内部tic toc计时器进行测量。例如:

抽搐;暂停(1);toc

运行时间为1.006905秒

抽搐;暂停(0.001);toc

运行时间为0.018834秒


如果你不能按照评论中的建议“预渲染”整个声音序列,我会使用这样一种工具,它可以同时处理定时和音频播放。

我会通过将所有单个正弦信号缝合在一起来构建一个大信号,然后播放它哦,或者,如果你事先知道要播放什么,那么播放起来会容易得多:)。是的,而且比这更糟糕。Try
s=sin(linspace(0,1,10000)*400*pi);抽搐;对于i=1:N;声音(s,10000);结束;toc
适用于较小的N值:(。