使用Matlab在一定时间内产生声音并导出它们

时间:2013-10-11 11:42:38

标签: matlab

我正在做研究,这是我需要完成它的最后一步,但我不知道该怎么做。

我需要在Matlab中模拟心率的声音作为哔哔声。例如,如果我的心率是70bpm,那么我需要能够在一分钟的时间间隔内创建70个哔声。

我一直在研究它,我无法知道如何做到这一点。

我最接近的是:

Fs = 48000;
HR = 70 ;  % Heart beat bpm (range 60 - 200Bpm);
pulse_width = 60e-4;
Amp = 0.5;
delay = 30/HR
%delay = ((60/HR)/2)-(0.5*pulse_width);
t1 = -delay:(1/Fs):delay;
Heartbeat = Amp*tripuls (t1,pulse_width);
% plot ( t1, Heartbeat);
% Output signal to heart rate monitor
while (1)
sound(Heartbeat,Fs);
end

但这是问题, 1.必须有一些更简单的方法来做到这一点。 2.我无法导出声音。

1 个答案:

答案 0 :(得分:0)

您可以使用audiorecorder录制特定秒数的声音。

nb_seconds = 5;
recObj = audiorecorder(fs, bits, 1);
recordblocking(recObj, nb_seconds);
while (1)
    sound(Heartbeat,Fs);
end

然后使用play(recObj);播放,并使用x = getaudiodata(recObj);wavwrite(x, fs, bits,...);

记录到.wav

当您的函数sound(Heartbeat,Fs)一个接一个地播放声音Heartbeat时,您可以创建一个包含多次声音的矢量

repmat(Heartbeat,1,nb_heartbeat);

其中nb_heartbeat = 70将持续1分钟。