matlab - 将数组作为声音播放并并行记录其输出

标签 matlab audio ubuntu octave

我知道 Octave/MATLAB 可以将数组作为声音播放,但我想知道 Octave 是否可以这样做:我想循环播放一系列频率并让 Octave 使用我电脑上的扬声器播放它们,并让 Octave还使用麦克风输入录制声音以获得最大值。我正在尝试自动化一种方法,让 Octave 在频率之间循环并记录接收到的数据,这样我可以稍后返回并查看共振频率。 Octave 可以并行执行此类操作吗?

我正在使用带有全双工声卡的 Ubuntu Linux 10.04 64 位

例子:

clear all
t=linspace(0,1,44100);
A = 1; % amplitude
Fs = 44100

for ii=1:1:10
     freq=ii; %how many in 1 sec
     T = 1/freq; % period of the signal
     vertoffset=0.5;
     % square
     square = mod(t * A / T, A) > A / 2;
     square = square - vertoffset;
     sound(square,Fs);
end;

最佳答案

这可以用 SOX 来完成 http://sox.sourceforge.net/

执行此操作的 Octave /SOX 代码示例是 system('play/home/a_playback.wav | rec -c 1 -r 8000 -b 16/home/a_record.wav trim 0 00:01')

关于matlab - 将数组作为声音播放并并行记录其输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7923137/

相关文章:

java - Java中的Yamaha DX7单位生成器合成器

audio - AVCaptureSession 音频样本以与 AVAudioSession 采样率不同的频率捕获

docker - Anaconda3.sh 中的 `Failed to execute script entry_point`

ubuntu - Dockerfile 中的 USER 语句后 Ubuntu Docker 容器中的特权

r - 如何将这个 'sparse' Matlab bsxfun 调用转换为 R?

matlab - 整个循环完成后,在循环中绘制并保存绘图

arrays - 在 MATLAB 中比较两个相同大小的向量

java - 绘制振幅

c++ - 旧发行版上的二进制兼容性(使用 C++11)

c# - 如何在 C# 中从 RGB (565) 值绘制 2D 图像