利用SensorTile和EXCEL对双声道麦克风的数据进行简单分析
[复制链接]
本帖最后由 littleshrimp 于 2017-10-17 10:23 编辑
使用的方法是在代码里将声音保存到数组 利用IAR调试模式把数据保存到电脑 再导入EXCEL 通过EXCEL的数据分析工具进行分析 在AudioLoop里定义2个数组和一个索引 int16_t audio_out1[4096]; int16_t audio_out2[4096]; int16_t audio_out_index = 0; 在AudioProcess函数里把左右2个麦克风的音频数据添分别加到定义的2个数组 audio_out_index达到数组界限时从零开始 { audio_out_buffer[IndexOut++] = PCM_Buffer[indexIn]; audio_out_buffer[IndexOut++] = PCM_Buffer[indexIn+1]; audio_out1[audio_out_index] = PCM_Buffer[indexIn]; audio_out2[audio_out_index] = PCM_Buffer[indexIn+1]; audio_out_index++; if(audio_out_index >=4096) { __NOP(); audio_out_index = 0; } } 对着麦克风吹哨的同时将断点打在__NOP();处 在Watch窗口展开数组 在Watch窗口点右键选择Save to File 打开保存的Watch1.log文件(保存时默认文件名) 分别复制audio_out1和audio_out2下边的0~4095行数据再粘贴到EXCEL 并为数据添加声道标识 在EXCEL里选中B列和F列选择插入->拆线图 生成时域数据,由于数据过多,波形比较密集 在图表波形处单击右键选择“选择数据” 将4067改成100 生成新的波形 选择数据->数据分析->傅利叶分析 输入区域选择B2~B2096,输出区域选择I列,生成左声道数据 利用同样的方法生成右声道数据到J列 生成后的数据 通过IMREAL(I?)得到左声道的实部 通过IMAGINARY(I?)得到左声道的虚部 通过SQRT(实部^2+滤部^2)计算左声道模值 模/4096计算直流分量的幅度 模/4096/2 计算其它频率的幅度 此处公式错误,应为“模/(4096/2) ”实际结果会比图片中的结果大4倍 选择幅度列插入拆线图查看频谱 插入索引和频率列,使用(索引-1)*采样率/样本数计算不同索引处的频率 在频域图表上点右键->选择数据->水平(分类)轴标签->编辑,选择P(频率)列 图表的X轴对应频率数据 编辑图表数据列样本数放大图形 放大后的图形
|