一 概念
EDF,全称是 European Data Format,是一种标准文件格式,用于交换和存储医疗时间序列。其能够存储多通道的数据,允许每个信号拥有不同的采样频率。在内部,它包括标题和一个或多个数据记录。标题包含一些一般信息(患者标识,开始时间......等等)以及每个信号的技术规格(校准,采样率,过滤,......等等),编码为 ASCII 字符。数据记录包含小端 16 位整数的样本。 所以,EDF 也是多导睡眠图(PSG)录音的流行格式。
二 源码解析
1 设置格式和通道个数
hdl = edfopen_file_writeonly("testa.edf", EDFLIB_FILETYPE_BDFPLUS, chns);
2. 设置每个采样点的个数
for(i=0; i<chns; i++) { if(edf_set_samplefrequency(hdl, i, SMP_FREQ)) { printf("error: edf_set_samplefrequency()\n"); return(1); } }
3. 设置最大的数字量程
for(i=0; i<chns; i++) { if(edf_set_digital_minimum(hdl, i, -8388608)) { printf("error: edf_set_digital_minimum()\n"); return(1); } }
4.数据转换格式
for(uint32_t iss = 0; iss < FRAME_OPUS; iss += 24) { ads1299_data_process(buf3+iss,24); fprintf(file_out,"%d,%d,%d,%d,%d,%d,%d,%d,%d\n",tick_num,ads1299_data[0],ads1299_data[1],ads1299_data[2],ads1299_data[3],ads1299_data[4],ads1299_data[5],ads1299_data[6],ads1299_data[7]); printf("%f\n",(double)ads1299_data[0]); buf[send_cnt++] = (double)ads1299_data[0]; amount_num++; } if(edfwrite_physical_samples(hdl, buf)) { printf("error: edfwrite_physical_samples()\n"); return(1); }
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |