您是为了好看吧,,考虑到一般播放的音频的采样率在几千Hz,因此完全实时不是很现实(画图函数估计没那么快)。
设采样率Fs,建议显示一段长度为Fs/50点的信号,每过1/50秒就重绘整段信号。
至于这个时间控制,可以试试for循环加pause()函数。但是这种方法可能不会太精确。
或者用Timer类。用法是:t = timer('TimerFcn',@mycallback, 'Period', 0.02);start(t);结束时用stop(t);
wa=audioread('1.wav');
step=100;
temp=[wa',zeros(1,step)];
for i=1:step:length(wa)
% pause(1/8000)
figure(1)
plot(temp(i:i+step))
axis([0,step,-0.1,0.1])
sound(temp(i:i+step))
end
step相当于刷新速度。
试过,如果直接在循环里plot,循环外sound。之间的频率没法匹配起来。只能都放循环里面了。
短时间就想到这个方法,如果你有什么的方法,麻烦也告诉我一下。一起学习