我正在做我的班级项目,制作一种猫驱避剂。应用程序应该检测猫(OpenCV实现)并对猫发出尖叫。然而,我想让我的软件发出超声波的尖叫声,这样它就不会打扰周围的任何人。有人知道我是怎么用matlab做到这一点的吗?
发布于 2013-05-01 09:48:10
为此,我在这个帖子中引用了@Gnovice所提供的答案:How do you generate dual tone frequencies in MATLAB?
他的解决方案概述了如何生成特定频率和持续时间的音调,以及如何在Matlab中播放和保存它们。
总而言之,要生成以1 1kHz采样并持续2秒的50 Hz音调的数据:
Fs = 1000; % Samples per second
toneFreq = 50; % Tone frequency, in Hertz
nSeconds = 2; % Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));要播放此声音:
sound(y, Fs); % Play sound at sampling rate Fs编辑:根据@Bjorn的新评论删除放大部分的行
发布于 2013-05-01 22:41:02
Ryan的回答基本上是正确的,但还有更多的问题,我无法在评论中进行充分的解释。两个主要问题是:
以下是我的具体建议:
Fs = 44100; % Samples per second. 48000 is also a good choice
toneFreq = 17000; % Tone frequency, in Hertz. must be less than .5 * Fs.
nSeconds = 2; % Duration of the sound
y = sin(linspace(0, nSeconds*toneFreq*2*pi, round(nSeconds*Fs)));
sound(y,Fs); % Play sound at sampling rate Fs如果需要提高音量,请调高计算机系统或扬声器的音量。如果它一直向上,你不能在matlab中使它变得更响亮。您可以通过增加toneFreq但使其小于.5 * Fs来修改它。大多数计算机扬声器在22050的音量下不会输出太多,所以我选择了17000,从技术上讲,这不是超声波。
此外,用toneFreq=440测试代码(应该与钢琴上的"A“音高相同)或其他东西,这样你就可以知道它是工作的,你可以听到它有多大。
https://stackoverflow.com/questions/16311377
复制相似问题