matlab处理采集的声音数据
来源:互联网 发布:达内java培优班知乎 编辑:程序博客网 时间:2024/06/02 15:47
上次采集的声音信号需要进过一系列的信号的预处理才可以用于机器学习算法的使用。
数据处理需要把时域信号转换成频域信号,并把无用频率删除了,并把对应的信号分隔成22个样本,分开样本的意思就是可以做训练集和测试机,从而检测我们训练的模型的正确性。采集的过程如下
1.将采集的信号切割到固定的大小
package com.hemin.balltest;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.LineNumberReader;public class DeletDatato300w {public static void main(String[] args) throws IOException {String path ="H:\\数据采集\\验\\有线通道\\湿磨\\";String pro1 = "有线";//String pro1 = "无线";for(int i=1 ;i<103 ;i++){String newpath =path+ String.valueOf(i)+"\\";System.out.println(newpath);File dir = new File(newpath);String[] children = dir.list();for (String string : children) {if(string.contains(pro1)){String filepath = newpath+string;String wfile = "d:\\data\\有线\\"+String.valueOf(i)+"_"+string;File df = new File(wfile); File f = new File(filepath);FileWriter wf = new FileWriter(wfile);getTotalLines(f , wf);wf.close();}//if(string.contains(pro1)){//String filepath = newpath+string;//String wfile = "d:\\data\\"+String.valueOf(i)+"_"+string;//File df = new File(wfile); //File f = new File(filepath);//FileWriter wf = new FileWriter(wfile);//getTotalLines(f , wf);//wf.close();//}}}} public static void getTotalLines(File file ,FileWriter wfile) throws IOException { BufferedWriter wb = new BufferedWriter(wfile); FileReader in = new FileReader(file); LineNumberReader reader = new LineNumberReader(in); String s = reader.readLine(); int lines = 0; while (s != null) { lines++; s = reader.readLine(); if(lines>1000 && lines<=3001000 ){ //System.out.println(s); wb.write(s); wb.newLine(); } wb.flush(); } wb.close(); reader.close(); in.close(); }}
2.把对应的信号从文件中分离出来
%%clc;clear;%%file=dir('D:\数据\球磨机\5\无线\*.lvm');%%遍历所有文件for n=1:length(file) n data=importdata(['D:\数据\球磨机\5\无线\',file(n).name]); path_all=regexp(file(n).name,'_','split'); dirname=path_all{1}; a=['mkdir ' ['D:\data\通道数据\' dirname]]; system(a) ; path1 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch1.mat']; path1_1 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch1.mat']; path2 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch2.mat']; path1_2 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch2.mat']; path3 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch3.mat']; path1_3 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch3.mat']; path4 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch4.mat']; path1_4 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch4.mat'];% path5 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch5.mat'];% path1_5 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch5.mat'];% path6 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch6.mat'];% path1_6 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch6.mat'];% path7 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch7.mat'];% path1_7 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch7.mat'];% path8 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_ch8.mat'];% path1_8 = ['d:\data\通道数据\',path_all{1},'\',path_all{1},'_BM_ch8.mat'];% % %% 保存8列% %1 data1 = data(:,2); save(path1,'data1'); BM_data1 = creat_BM_data(data1); save(path1_1,'BM_data1'); %2 data2 = data(:,3); save(path2,'data2'); BM_data2 = creat_BM_data(data2); save(path1_2,'BM_data2'); %3 data3 = data(:,4); save(path3,'data3'); BM_data3 = creat_BM_data(data3); save(path1_3,'BM_data3'); % data4 = data(:,5); save(path4,'data4'); BM_data4 = creat_BM_data(data4); save(path1_4,'BM_data4');% %% data5 = data(:,2);% save(path5,'data5');% BM_data5 = creat_BM_data(data5);% save(path1_5,'BM_data5');% %% data6 = data(:,3);% save(path6,'data6');% BM_data6 = creat_BM_data(data6);% save(path1_6,'BM_data6');% %% data7 = data(:,4);% save(path7,'data7');% BM_data7 = creat_BM_data(data7);% save(path1_7,'BM_data7');% %% data8 = data(:,5);% save(path8,'data8');% BM_data8 = creat_BM_data(data8);% save(path1_8,'BM_data8');end
3.将所有的文件合并至一个文件中
%%clc;clear;%%for c=1:8 c root_path = 'D:\数据\5\通道数据\'; ch=['ch',num2str(c)]; ch1=['ch',num2str(c)]; ch_data = [] all_path = [root_path , ch]; %% for i = 1:102 path = [all_path ,'/', num2str(i),'_BM_',ch1,'.mat']; data = importdata(path); ch_data(i,:,:) = data ; end sp = ['d:/data/ch',num2str(c),'.mat'] save(sp,'ch_data') end
4.用平均值降维
clc;clear;for i = 1:8 i path = ['D:/数据0/ch_' , num2str(i)]; spath=['D:/数5/300/ch_',num2str(i),'.mat']; load(path) ch_infor = []; for j = 1:102 for k= 1:22 data = reshape(ch_data(j,k,:) , 1,6000); for m=1:300 data_new(m) = mean(data(m*20-19:m*20)); end ch_infor(j,k,: )=data_new; end end save(spath,'ch_infor');end
5.制作训练集和测试机
clear;clc;%% create train data and test datafor fi = 1:8 path = ['d:/数据/球磨机/5/300/ch_' , num2str(fi),'.mat'] spath1 = ['d:/数据/5/通道数据/ch' , num2str(fi),'/train_x.mat'] spath2 = ['d:/数据/5/通道数据/ch' , num2str(fi),'/test_x.mat'] load(path); index = 1; for i = 1:102 for j=1:15 train_x(index,:) = reshape( ch_infor(i,j,:),1,300); index=index+1; end end save(spath1, 'train_x'); index = 1; for i = 1:102 for j=16:22 test_x(index,:) = reshape( ch_infor(i,j,:),1,300); index=index+1; end end save(spath2 , 'test_x'); end
最后做出的图为:
这说明训练的模型还是有用的!可以把对应的模式给识别出来
0 0
- matlab处理采集的声音数据
- Matlab声音处理教程
- matlab声音处理
- matlab串口采集数据
- matlab 数据的处理
- 数据采集与处理
- 基于MATLAB的实时数据采集与分析研究
- 一种matlab调用signaltap采集数据的方法
- 声音采集
- 【VS开发】【智能语音处理】VS中声音的采集实现
- unity3D学习之声音的采集与处理-audio菜鸟笔记1
- unity3D学习之声音的采集与处理-audio菜鸟笔记2
- 【转载】VC中实现语音(声音)数据的采集(附源代码)
- VC中实现语音(声音)数据的采集(附源代码)
- 阶段小结-声音的采集和播放
- JAVA的声音处理
- 声音导引系统及信号采集处理电路设计
- C# 在采集数据时的验证与登录处理
- poj 3278 简单BFS
- load data infile
- (细节题)[LeetCode]Minimum Window Substring
- Android studio用javah生成头文件需要注意的几点。
- 解决Windows7 Path环境变量过长的方法
- matlab处理采集的声音数据
- LeetCode 450. Delete Node in a BST
- HUE中集成Solr
- 理解Andriod 硬件加速
- BZOJ 1127: [POI2008]KUP 最大子矩阵
- C#—抽象方法
- Android h264视频与G711转码合并MP4文件
- 数组的sort方法-数值数组的重排序
- Coursera Machine Learning 第七周 quiz Support Vector Machines