matlab整理数据集

来源:互联网 发布:php post 数据并跳转 编辑:程序博客网 时间:2024/06/06 17:42

今天用matlab整理了一天的数据集,心好累。
原始数据是这样的,(152.0, 115.0, 167.0, 135.0), (221.0, 127.0, 240.0, 152.0)。
我需要把每个数字字符分出来。
关键代码如下:

 tline=fgets(fidin); %从文件读行 s=regexp(tline,'\([^)]*)','match');  %正则表达式,提取出每个括号中的内容。 %s{1}是一个字符串,为(152.0, 115.0, 167.0, 135.0) %s{2}是一个字符串,为(221.0, 127.0, 240.0, 152.0) m=numel(s);%s中字符串的个数,此处等于2 for i=1:m    s2=(regexp(s{i},'\d*\.\d*', 'match'));    %这也是个正则表达式,作用是提取s{i}字符串中的数字部分。    for j=1:4        fprintf('%s',s2{j});        fprintf('\n');    end end %打印出来的s2{j}就是分拆出来的数字152.0115.0167.0135.0221.0127.0240.0152.0

由上可以看出,正则表达式非常强大。
之后还经历了文件的删除,
delete([path,filename]);
以及文件的重命名。
eval([‘!rename’ 32 strcat(path,filesname) 32 newname]);
需要注意的是,源文件名前面要加路径,而目标文件名前面则不用。以及32和前后面都要有空格。(忍不住吐槽matlab改文件名为什么这么奇怪的写法)
最后涉及到的问题就是读写xml文件。xml文件读写有两种方法,一种是matlab自带的函数,即xmlread,xmlwrite,这个用法感觉非常复杂。
第二种方法是使用工具包。http://download.csdn.net/search?keywords=xml_io_tools
其提供的 xml_read和xml_write函数非常方便。代码如下:

annotation = xml_read(strcat(path_label,label_name));annotation.filename=files_all(i).name;xml_write([strcat(path_label,label_name)],annotation);

即通过xml_read读出来,然后修改节点内容,最后通过xml_write写进去,就OK了。

0 0
原创粉丝点击