[已答复] MATLAB可以读取哪些数据格式?

[复制链接]
knightend 发表于 2015-5-29 13:25:22
晚辈刚入行不久,在学习Matlab中,现遇到棘手的问题:
1,用Matlab读取测试的结果,结果是8位的十六进制的代码,保存的格式是LOD文件。
2,Matlab读取的文件必须是用固定的函数吗    有些不常用的软件保存的数据可以读取吗?   比如TSDPR的
望哪位大师指点一二,晚生不胜感激!:handshake

14 条回复


knightend 发表于 2015-5-29 15:39:39
求指点   :'(

stellari 发表于 2015-5-29 20:54:01
任何文件的原始内容都可以用MATLAB来读取。但是每种格式的文件的组织形式不同,所以你必须有一个“文件信息分析器”来帮助你解析读到的原始内容。MATLAB提供了许多常用数据文件格式的解析器,但是如果是非常不常见的格式,那么可能就无能为力了。你现在要做的事情是:

1. 了解所需读取的格式是什么类型的文件,是什么软件产生的。再去搜MATLAB的官方文档,看是否已经在MATLAB中有自带支持。
2. 如果1失败,那么可以在网上试着寻找一些其他人写好的能够解析该文件格式的程序。
3. 如果2失败,那么就必须自己阅读该文件的规格文档,自己写文件解析器。

knightend 发表于 2015-6-1 16:01:37
stellari 发表于 2015-5-29 20:54
任何文件的原始内容都可以用MATLAB来读取。但是每种格式的文件的组织形式不同,所以你必须有一个“文件信息 ...

您好,专家,非常感谢您的回复。
我的文档是TSDR(test system developer report软件的测试结果 ),有点不常用哈。
如您所说的,官方可解读文档没有这样的程序,我还在查询,也许是我的资料有限。
    您有用过的文件解析程序吗,能否分享给小弟些,小弟真诚跪谢。
不管怎么说,非常感谢您的耐心回复,因为我这上网不便,没有及时回复,望您见谅,谢谢。

stellari 发表于 2015-6-1 19:38:39
knightend 发表于 2015-6-1 16:01
您好,专家,非常感谢您的回复。
我的文档是TSDR(test system developer report软件的测试结果 ),有点 ...

抱歉,这种格式我并未听说过,而且网上也搜不到任何信息。不过你提到它是一种“文档”格式,我的理解是这个文件里的大部分内容是文本。如果你只是对文本感兴趣的话,你不妨试着先把文件的原始信息读出来,然后除去所有的“非可显示文本”部分。


knightend 发表于 2015-6-2 15:49:44
stellari 发表于 2015-6-1 19:38
抱歉,这种格式我并未听说过,而且网上也搜不到任何信息。不过你提到它是一种“文档”格式,我的理解是这 ...

恩恩   您说的很对,内容是文档的形式,还是期望请教您,原始的信息怎么可以读出来。
您之前所说的“解析文字的程序”是指平时调用函数那样的语句吗?
还望您有空可以赐教,谢谢您!

stellari 发表于 2015-6-2 18:11:51
knightend 发表于 2015-6-2 15:49
恩恩   您说的很对,内容是文档的形式,还是期望请教您,原始的信息怎么可以读出来。
您之前所说的“解析 ...

想读取未知格式文件的原始信息,一般使用fread函数。请参阅fread的帮助文档。

在用fread将其读入成字符串后,它可能会看起来是这个样子的

text = ‘
!@#@#!@%#@#¥%GFABZ¥#!@#¥
!@#¥
……%#*
¥%……&&&&&

TSDR Report v2.0
Test Result 1  &!
Test Result 2  &!
Test End
$#!@#^$#@#$%


可读文字中里面可能会穿插了许多这种乱码字符。开头和结尾的那些你可以简单地删掉。文本中的&!你可以用strrep函数来将其替换为空格。但是,这种事情最好是用“正则表达式”来做。如果你不懂或没听过正则表达式,请参考MATLAB中的regex函数和这个教程:
http://deerchao.net/tutorials/regex/regex.htm

knightend 发表于 2015-6-4 15:49:42
好的,我试试,非常感谢您的回复,谢谢。
有不懂的地方,我再请教您,谢谢!

knightend 发表于 2015-6-5 16:14:04
stellari 发表于 2015-6-2 18:11
想读取未知格式文件的原始信息,一般使用fread函数。请参阅fread的帮助文档。

在用fread将其读入成字符 ...

大神,很大的问题,可以读了,但读出来的全是乱码,还有什么办法了吗?
欲哭无泪了,望您可以再帮帮忙,谢谢您啦!

stellari 发表于 2015-6-5 16:32:31
knightend 发表于 2015-6-5 16:14
大神,很大的问题,可以读了,但读出来的全是乱码,还有什么办法了吗?
欲哭无泪了,望您可以再帮帮忙, ...

如果文件原始内容中没有任何人类可读的文本的话。那么很遗憾,这个文档的内容可能是按照某种特殊方式组织/加密过的。这种情况下,你*必须*找到一份详细描述该文件内容的组织形式的文档。如果无法获得这一文档,恐怕你的问题是非常,非常难以得到解决的。

最后一种方法是,使用“逆向工程”手段。自己破解该文件格式。这点必须有极端强大的分析能力才做得到,我是没这个水平的。

knightend 发表于 2015-6-5 16:51:22
stellari 发表于 2015-6-5 16:32
如果文件原始内容中没有任何人类可读的文本的话。那么很遗憾,这个文档的内容可能是按照某种特殊方式组织 ...

不不,是我表述不好吧。  文件是一份测试报告的文档,都是文字和数字还有英文。只是用matlab读取出来成了乱码的,您有好的解决办法吗?   谢谢

stellari 发表于 2015-6-6 09:47:50
knightend 发表于 2015-6-5 16:51
不不,是我表述不好吧。  文件是一份测试报告的文档,都是文字和数字还有英文。只是用matlab读取出来成了 ...

你的表述很清楚。我之前说的意思就是针对“如果用MATLAB读出的原始信息是乱码”而言的。

不过既然你能够查看这份文档。为何不直接将其中的文字复制粘贴下来,而一定要用MATLAB读?

knightend 发表于 2015-6-8 15:47:03
哈哈,真的不好意思。这样做的是因为可以用Matlab进行数据处理,避免第三方软件的限制。
之前的问题已经解决了,非常感谢您。
大神,还想请教个问题,可以读取之前的特殊文本了,现在想循环读取命名有顺序规律的文件,请指教,用for还是eval,麻烦写个程序,谢谢啦

knightend 发表于 2015-6-12 15:58:36
stellari 发表于 2015-6-5 16:32
如果文件原始内容中没有任何人类可读的文本的话。那么很遗憾,这个文档的内容可能是按照某种特殊方式组织 ...

请大神指点,谢谢
现在存在两个数
    先判断两个数是否相同
        相同输出   Pass         不相同输出   Fail
输出函数 用  fpringtf(fid,'%s\r\n','')   格式

我的程序:
   fid=fopen('report.txt','wt')
    data=fread('1.lod','r')
    %p判断
       if   data(1)==data(2)
            out1=Pass
      else  
           out2=fail

           frintf(fid,'%s\r\n',out1 or ou2)
      fclose(fid)

里面有错的地方:     
         判断方式不对,以及输出的时候用or也有问题!            
  请大神指点,谢谢                                       在线等

鲜衣怒马少年时 发表于 2017-12-14 10:53:55
stellari 发表于 2015-5-29 20:54
任何文件的原始内容都可以用MATLAB来读取。但是每种格式的文件的组织形式不同,所以你必须有一个“文件信息 ...

大神你好,我采集的数据是wda格式的,matlab可以直接读取吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表