如何使用移动线光标在MATLAB上与音频文件同步绘制图形

时间:2014-01-04 13:41:50

标签: matlab audio plot cursor line

基本上,我必须创建一个绘制.wav文件的GUI。我想要包含一条移动线光标,该光标在与播放的音频同步的轴上移动。

基本上,每当我点击“播放音频”按钮时,该行应按照音频文件的确切时间段在图表中移动。

1 个答案:

答案 0 :(得分:0)

由于我没有您的音频数据,我将创建5000个以1000 Hz采样的随机点进行播放和绘图

x=[randn(2500, 1)/10; randn(2500,1)*10]; % noise with a step change in the middle
fs = 1000;
time=(0:length(x)-1)/fs;
figure(1)
plot(time, x)
xlabel('Time (s)')
grid on
end_time = length(x)/fs;

现在我将创建一条红色垂直线,它将在播放时沿着数据移动。需要存储句柄h,以便更新x数据

h=line([0,0],[-30,30],'color','r','marker', 'o', 'linewidth', 2);

以下是用户点击播放按钮时将运行的代码:

sound(x, fs) % starts playing the sound
tic % Starts Matlab timer
t=toc; % Gets the time since the timer started
while t<end_time
   set(h, 'xdata', t*[1,1]) % Moves the line to the time indicated by t
   drawnow % necessary to get figure updated
   t=toc; % get the current time for the next update
end

此代码尽可能快地更新该行,因此如果您拥有更快的计算机,您将获得比计算机速度更慢的更新。