作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在matlab中做音频信号处理。作为我项目的一部分,我正在播放录制的音频信号,对其进行处理并实时播放。现在,我通过两个 channel 发送的输出,我希望以不同的方式处理它,并且还想绘制图表。
基本上,我希望左耳听到与右耳不同的处理信号并绘制它。
即使它不是实时的,即任何存储的信号(.wav 等)都会有所帮助。
任何帮助将不胜感激(没有太多时间:()。
最佳答案
如果您使用的是存储的 .wav 文件,您可以使用 wavread
导入,这会将文件作为两列数组导入。如果你调用这个数组A
,您可以使用 A(:, 1)
操作左声道右声道使用A(:, 2)
.
如果您使用 audiorecorder
要录制音频,您必须将 channel 数从 1 更改为 2,以便以立体声录制。默认为单声道。
编辑:要实时绘图,您可以使用我编写的以下函数。该函数将您要记录的时间量作为其输入runtime
.它创建一个计时器timerID
并使用 drawnow
连续从记录器对象中获取音频数据并绘制它刷新图形。如果你想做任何处理,你可以在 plot
之前的循环中进行。命令。
function audioPlot(runtime)
timerID = tic;
recObj = audiorecorder(44100, 24, 2);
record(recObj);
h(1) = subplot(2, 1, 1);
h(2) = subplot(2, 1, 2);
while (toc(timerID) < runtime)
if recObj.TotalSamples > 0
audioData = getaudiodata(recObj);
plot(h(1), audioData(:, 1))
plot(h(2), audioData(:, 2))
xlabel(h(1), 'Left Channel')
xlabel(h(2), 'Right Channel')
drawnow
end
end
stop(recObj);
end
关于matlab - 如何在matlab中分别控制耳机左右声道在matlab中播放音频信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892702/
我是一名优秀的程序员,十分优秀!