然后镇闷以时间作为横坐标,采样点作为纵坐标,然后画点连线。
可以参考《Programming Windows,Fifth Edition,Charles Petzold 》第22章 声音与音乐
需要注意的是Wave文件格式有很多种吵余,可以在升旅滚网上查找相关资料。
你要画波形图这个肯定是可以的,但是JAVA没有这个波形图显示控件,你要自己开发一个显示控件。获得显示坐标和波形图的代码呢,方法比较多,弊备以前我在.NET里做,画图塌卜枣用的那个GDI+来实现坐标和画图的。
简单的画个圆啥的就可以用那个自带的类啊,以下代码仅供参考。
java.awt
类 Graphics
Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。
Graphics 对象封装了 Java 支持的基本呈现 *** 作所需的状态信息。此状态信息包括以下属性:
要在其上绘制的 Component 对象。
呈现和剪贴坐标的转换原点。
当前剪贴区。
当前颜色。
当前字体。
当前逻辑像素 *** 作函数(XOR 或 Paint)。
当前 XOR 交替颜色(参见 setXORMode(java.awt.Color))。
坐标是无限细分的,并且位于输出设备的像素之间。绘制图形轮廓的 *** 作是通过使用像素大小的画笔遍历像素间团拆无限细分路径的 *** 作,画笔从路径上的锚点向下和向右绘制。填充图形的 *** 作是填充图形内部区域无限细分路径 *** 作。呈现水平文本的 *** 作是呈现字符字形完全位于基线坐标之上的上升部分。
%你好,该程序读mywav.wav文件,然后显示频谱以及波形。注意,mywav.wav文件不要太长,否则运算会很慢。[y,Fs,bits]=wavread('mywav.wav')%读滚慎出信号,采样率和采样位数。
y=y(:,1)%我者段这里假首备誉设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)
sigLength=length(y)
Y = fft(y,sigLength)
Pyy = Y.* conj(Y) / sigLength
halflength=floor(sigLength/2)
f=Fs*(0:halflength)/sigLength
figureplot(f,Pyy(1:halflength+1))xlabel('Frequency(Hz)')
t=(0:sigLength-1)/Fs
figureplot(t,y)xlabel('Time(s)')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)