急!!!波形图

miter 2003-08-19 02:37:36
该怎么样画一个wav,midi文件的波形图
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DarthVader 2003-09-06
  • 打赏
  • 举报
回复
那么MIDI的波形图呢?可能比较麻烦
azheng0305 2003-09-05
  • 打赏
  • 举报
回复
给分!
azheng0305 2003-08-21
  • 打赏
  • 举报
回复
我做过一个画wav波形图的程序。
其实很简单:
1、直接用fopen打开你的wav文件;
2、先fseek到22字节处,读取下2字节的数据给一个整数变量,这是通道数(如果你的wav文件分左右声道,你画的时候要体现左右声道的话,这个也很重要);
3、再fseek到34字节处,读取下2字节的数据给一个整数变量,这是你的采样率信息(这个很重要);
4、然后fseek到第40字节处,读取下4个字节的数值赋予一个长整型变量,这个值就是你的wav数据长度了,哈哈;
5、根据你刚才读到的采样率采取不同的读数据方式,如果采样率==8,那么你要每1个字节一读,数据放到一个__int8的数组中;如果是==16,那么就每2字节一读,放到一个__int16的数组中——这些数组中的数据就是你的波形图的y轴坐标啦!不过这些值可能很大,你必须除去一个很大的数才可以表示成屏幕象素可以表示的图形信息,哈哈,我是这么做的,8位的就除去128再乘以你要话的图形的高度的一半,如果是16位的,就除以32768再乘以你要画的图形的高度的一半。当然,图形有x、y组成,x就随便你啦,你可以用你要画的图形宽度除以你的数组长度(16位要用数据数除以2)在一个一个累加就可以了。

其他的你自己摸索吧。

对了,对于通道数为2的wav,是这样的,数据区的数据是第一个数据是左声道,紧接的一个数据是右声道。

注意,以上所说的,仅仅可以正常画出没有经过任何压缩的wav文件的波形图,其他压缩过的,你自己要揣摩如何解压缩了,这是自找麻烦的事情,你干吗不用一个纯wav的文件?呵呵
潘李亮 2003-08-19
  • 打赏
  • 举报
回复
我也在研究
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。  我将带领大家一起来学习:Qt麦克风数据探测、FFmpeg解码音频数据、音频波形、音频播放器。具体内容包括:1.Qt采集麦克风并探测数据,生成动态矩形。2.FFMpeg解码音频数据,生成PCM数据,并绘制波形。3.音频播放器实战。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于python的心电信号设计模型结构完成5分类任务(源码+模型+项目说明).zip ## 1. 介绍 心血管疾病是指影响心脏和血管健康的各种疾病,包括冠心病、心肌病、心律失常等,是全球范围内的头号杀手。随着现代生活压力的不断增大,人们越来越关注心血管健康问题。传统的医生问诊方式存在误诊率高、诊断不及时等弊端,而心血管疾病发病、宜早治疗的特点更加强调了诊断的准确性和及时性。许多心血管疾病的病发初期常伴有心律失常的出现,因此心律失常的检测对于心血管疾病的预防具有重要意义。目前,广泛应用的心律失常检测方法是心电(ElectroCardioGram,ECG) 信号诊断。 传统处理心电信号分类问题的机器学习方法为自回归模型、支持向量机等。近年来,神经网络的兴起为心电的识别提供了多种解决方案。其中,一种效果良好的方法为对信号进行滤波处理后使用循环神经网络(RNN)进行特征分析;此外,深度学习的兴起为心电的识别提供了一种端到端的解决方案。研究指出,卷积神经网络(CNN)中每个卷积核相当于一个滤波器,能够从原始信号中提取出有用的信息,因此可以达到信号滤波同样的作用,与此同时同步进行特征提取,从而可以直接将原始心电数据输入到模型中进行分类。本实验受到以上两种广泛使用的网络结构的启发,提出了一种利用CNN作为滤波器和特征提取器、利用RNN处理前者提取特征的网络结构,兼具两者优点,并在计算时间、收敛速度、准确率上达到了极好的tradeoff。 ## 2. 实验目的 本实验旨在探索高效的深度学习算法,对人体心电信号进行分类,以判断被测试者心跳是否正常,或者患有何种心脏疾病。最终的目标是实现心电数据的5分类。通过这种方法,可以减少人工处理心电数据的工作量,提高诊断的准确性和效率。同时,该方法还可以为未来的心血管疾病预测和早期预防提供新的思路和方法。 ## 3. 实验原理和方法 ### 3.1 心电和心率失常 心电的原理基于心脏的电活动,即心脏肌肉在收缩和舒张过程中产生的微弱电信号。这些电信号可以通过在身体表面放置多个电极,从而形成导联,进而测量和记录心电。心电记录了心脏电活动在时间和振幅上的变化,提供了关于心脏节律、传导系统、心室和心房肥厚以及心肌缺血等方面的信息。 心电波形主要包括P波、QRS波群和T波。P波代表心房的除极,QRS波群反映心室的除极,而T波表示心室的复极。这些波形的形态、幅度和间隔可以提供诸如心律、传导异常和心肌缺血等方面的信息。当发生心律失常时,心脏出现不规律跳动,心脏节律发生改变,心电中监测到的电信号也会随之出现明显变化。 ### 3.2 小波变换 受采集环境的影响,ECG信号中通常存在许多干扰信号和基线漂移。为了获取精准的心脏活动信号,避免噪声干扰产生误判,我们通常需要对ECG信号进行滤波,常用手段为小波变换(wavelet transform)。 小波变换是一种经常用于分析非平稳时间序列数据并提取有意义和正确特征的方法。广泛使用的方法为离散小波变换(DWT)。DWT是一种通过串行数字滤波器传递信号来降低连续小波计算成本并得出系数的方法。这种分解方法也被称为多分辨率分析。这些滤波器组包括高通(HP)和低通(LP)滤波器,如方程(1)和(2)所示, $$ H=\sum_{k=-\infty}^{\infty}S[k]\varphi_{h}[2n-k] $$ $$ L=\sum_{k=-\infty}^{\infty}S[k]\varphi_{g}[2n-k] $$ 其中S为输入信号,H和L分别为高通和低通滤波器的输出,$φ_h$和$φ_g$分别为低通和高通滤波器。高通滤波器输出包括输入信号的细节系数(D),低通滤波器输出包含近似系数(A)。通过滤波器的信号进行下采样,以增加频率分辨率。下中展示了这些分解过程逐级进行的过程。 首先,输入信号S经过高通和低通滤波器,以获得第一级的细节和近似系数。然后,获得的近似系数再经过滤波器以获得第二级的分量。这个过程一直重复,直到达到指定的级别。 Screenshot 2023-05-29 at 20.11.28

8,305

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧