ecg-id实验系统

来源:互联网 发布:淘宝直播小二钉钉群 编辑:程序博客网 时间:2024/05/21 04:41

       先说点题外话,本来准备考研究生了,因为在不会做一些值的在这里写的东西了,偏偏我们专业这学期的实验超多,这门课叫企业规划与项目管理。通过抽签我们组抽到了这么一个超冷门的课题,网上根本没有类似的。小组成员里虽然女朋友,还有徐红美,都是挺认真负责的同学,但是要说让她们编程也是根本你帮不上我的,不过还好,至少报告什么的写的比原来的组员积极很多。也不得不反省自己那多因为实验太多,经常会因为老师、同学催得太急和女朋友发脾气,还好女朋友脾气好,一直顺着我。

        首先说这次做的东西和之前的图像检索还是有相似之处的,也不至于是我我从下手。研究生给了我已经从心电图中提取出的数据特征,那这样看来只需要一个比较特征值的算法就可以实现身份验证的功能了,这也正是我这次最大的收获,也是难点。

        第一次接触算法,第一次意识到计算机与数学的结合。研究生要求我实现四个算法(她这里只是空想)——判别分析、相关分析、神经网络和支持向量机,第一次接触算法,还以为像原来一样网上总有些类似的程序什么的,找了一下根本没有。后来在研究生的点拨下,我意识到算法只是一些数学公式的堆叠,比如说相关分析,就是要把所有特征值组成一个矩阵,然后与已知的数据信息所组成的矩阵进行相关系数的计算,然后把最大的特征值认为是最匹配的信息。所以这样看来说整体的程序比不难,我要做的就是找到相关系数的函数,而相关系数的函数相当普遍,我用的是这里http://download.csdn.net/download/groil/4889559。

        所以说再难的程序也不难,分解开来一步步并不难,真的不该随便发脾气,不知道以后还有没有人想女朋友那样惯着我。

        我最开始遇到的问题是c#调用excel表格数据,其实是很必要把时间浪费在这里的,只是刚开始不知道,研究生还总想在气势上吓吓我,其实用文本文档简单又方便,唉。我最开始想做的是把excel表格数据直接导入到数据库中,网上这样的例子很多,都试了,有错误也不知道怎么改。最后被女朋友戏剧化的解决了,第一次知道原来sql server可以直接导入excel表格,看的是这个网站http://wenku.baidu.com/link?url=qZidyAyb9_0Fm6s4sTIzGq-CGcoz73x_ru-pGeohSLxH7IRb6qDd9cg1DDdtEw1FbcrtyKvRwEwUy3t7FvC2GmFQabF4EqDIAdlNhnuQKsW。不过这个方法真的很好用,我后来有一步做到了要实现一个求每组特征值的并分出角色然后存到数据库里,改了好久都有错误,我又想到了这个方法。我先用excel求好每列的平均值,然后再把表格导进去,哈哈,省了不少事。

        不过虽然导入数据库没实现,但是阴差阳错的实现了浏览,调取excel表中的数据的功能,其实究差最后一步把已缓存到的数据存进去,但是就是改不对。上一段代码。

DataSet myDataSet = new DataSet();            OpenFileDialog openFileDialog = new OpenFileDialog();//创建OpenFileDialog对象            openFileDialog = new OpenFileDialog();            openFileDialog.Filter = "Excel files(*.xls;*.xlsx)|*.xls;*.xlsx;";//描述文件类型的文字和可见的文件类型            if (openFileDialog.ShowDialog() == DialogResult.OK)            {                FileInfo fileInfo = new FileInfo(openFileDialog.FileName);                string filePath = fileInfo.FullName;                myDataSet = ExcelToDataSet(filePath);                dataGridView1.DataMember = "[Sheet1$]";                dataGridView1.DataSource = myDataSet;
 public DataSet ExcelToDataSet(string filename)        {            string strCon = "Provider=microsoft.ACE.OLEDB.12.0;Data Source='" + filename + "';;Extended Properties=excel 12.0"; //注意Excel 8.0; Imex=1或Excel 8.0; Imex=1; no=1要加单引号                        OleDbConnection myConn = new OleDbConnection(strCon);            string strCom = " SELECT * FROM [Sheet1$] ";            myConn.Open();            OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);            DataSet myDataSet = new DataSet();            myCommand.Fill(myDataSet, "[Sheet1$]");            myConn.Close();            return myDataSet;        }
       我后来自己分析,这里主要是把先打开exce表格,把其中的数据存到dataset中,再把dataset中的数据存到datagridview从而实现了浏览表的功能,进而对datagridview中的数据进行操作,这个很简单,参考了一下这里。http://zhidao.baidu.com/link?url=uarnmM3mDyPo22c4h3fkE8IVo2BPPDDhszYcfg7Bpt8g41gzMZZzbtZ1jDobkYEQh-9JK6TH4hfCPf7MK5pH-_
        还有一点"Provider=microsoft.ACE.OLEDB.12.0;Data Source='" + filename + "';;Extended Properties=excel 12.0";,这句话的格式要求非常严格,多一个空格都会报错。excel12.0是excel2007,excel8.0是excel2003。

        不过有个bug,我这里多读取的只能是sheet1中的数据,表名不对也会报错。

         后面的工作就和原来有些相似了,不过数据库感觉设计很差劲,连第一范式都不满足。但是特征值都是小数点后好多位,而且每个人有26个特征值,存成一个字符串实在是不现实,这个问题空想我都没想到过解决方案。

       说实话,我的程序到这里真的没有什么好提的了,说一下一些计划实现的东西吧。我看了判别分析,感觉比我的这个相关分析难很多,我也看了一下原理,是很多数学公式的堆叠,但我最终没有实现使用这种算法判别身份,因为其中有一步是要求实现计算行列式的值,感觉使用c#实现这个功能有点难,我也在网上查了一下,都是使用的matlab中的一个函数直接求的。

         我还看了神经网络,网上有好多现成的代码,无奈水平太低不会改,不知道找到的那些程序怎么知道他计算后的分类结果,所以判别的功能就没能实现。后来又计划导出权值,使用权值,来分辨冗余信息。我认为在一个角色的所有特征值中权值小的就是冗余信息,但是最终也没实现。其实冗余信息这里,研究生想让我使用相关分析来实现的,但是我感觉不太可能,我有26个特征值,那我要算26!个阶乘,数太大了,我之后也没想到什么更好的解决方法。

        诚实的说投入的精力很少,总是以考研究生为借口,课也不去上,现在没课了,又不好好学习了。可能人都是有惰性的吧。希望每个努力的人都成功!

        关与这次课程设计所有东西下载地址:http://download.csdn.net/detail/liangshanxiaohan/7569807

1 0