在matlab中以赫兹的频率播放不同的频率?

时间:2014-03-14 16:27:40

标签: matlab audio

我有一些matlab代码可以产生超过5秒的声音频率(以赫兹为单位)。它所代表的代码每秒输出100个样本,我想播放5秒的块以查看它听起来像什么,但我遇到了采样率和声音/声音命令的问题。

我的频率振荡(数据here)如果有人可以帮助我将这些数据转换成某种实时近似的声音,我将非常感激。

enter image description here

2 个答案:

答案 0 :(得分:1)

这样的事情可能会有所帮助

Fs=2000; %sample rate, Hz
t=0:1/Fs:5; %time vector
F=298+sin(2*pi*t);  %put your own F here

S=sin(2*pi*F.*t);  %here is the sound vector

%visual check
figure(1);
plot(t,S)
figure(2);
plot(t,F)

%listen
wavplay(S,Fs)

这就像FM调制,但不同。如果您有一个具有不同采样率的折叠矢量,您可以使用命令

进行转换
F=interp1(told,Fold,t);  %told and Fold are F at a different sample rate 
%check it
plot(told,Fold,t,F)

答案 1 :(得分:0)

首先,根据奈奎斯特 - 香农采样定理,您的采样率应至少是最大频率的两倍。

接下来,您需要生成正弦曲线:

Signal = sin(2*pi*Phi);

其中Phi是与所需频率模式相对应的相位,它只是频率的一个整数(可以用数字或分析方式进行)。