matlab 在批量处理csv文件数据的时候常用的处理函数

来源:互联网 发布:快递打印单软件 编辑:程序博客网 时间:2024/05/17 06:03

本篇文章中我将完成如何大批量处理csv文件的数据。首先讲解程序里用到的函数。

在此之前,向新手科普一下matlab注释多行的小技巧:注释:ctrl+r  取消注释:ctrl+t


1、str = strrep(str1, str2, str3)

用于删掉某些不需要的符号,比如本例中我用此函数删除了双引号!
在 str1 中找到str2 ,替换成str3

str1 = 'This is a good example.';
str2 = 'good';
str3 = 'great';
str = strrep(str1, str2,str3)
str =

This is a great example.


2、S = regexp(str,char,'split')

其中str是待分割的字符串,char是作为分隔符的字符(可以使用正则表达式)。分割出的结果存在S中。

以下面这样一串字符为例

Hello       Nocturne       Studio

首先去除首尾的多余空格:
<span style="font-family:Microsoft YaHei;font-size:18px;">str = <span style="padding: 0px; margin: 0px; color: rgb(0, 0, 255);">deblank</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
例1:设这几个字符串是以制表符分隔的,可以这样来做:
<span style="font-family:Microsoft YaHei;font-size:18px;">S = regexp<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'\t'</span>, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'split'</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
例2:设这些字符串是以一个或多个空格分隔的,可以用正则表达式来描述:
<span style="font-family:Microsoft YaHei;font-size:18px;">S = regexp<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'\s+'</span>, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'split'</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
这样,S{1}=’Hello’,S{2}=’Nocturne’,S{3}=’Studio’。 注意,上面得到的结果S是一个cell型变量,它的每个元素比如S{1}仍然是cell型的,只能用来display,不能直接用来进行字符串操作(比如获取其中的某个字符),所以我们在使用需要执行一次:
<span style="font-family:Microsoft YaHei;font-size:18px;">s1 = <span style="padding: 0px; margin: 0px; color: rgb(0, 0, 255);">char</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>S<span style="padding: 0px; margin: 0px;">{</span><span style="padding: 0px; margin: 0px; color: rgb(51, 51, 255);">1}</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>

这样的s1才是一个真正的字符串,可以进行后续的操作。


3、sort()

B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,A为二维时,对数组每一列进行排序.

eg: A=[1,5,3],sort(A)=[1,3,5]

   A=[1,5,3;2,4,1],sort(A)=[1,4,1;2,5,3]

(2)B=sort(A,dim),对数组按指定方向进行升序排序,

dim =1,表示对每一列进行排序,,dim=2表示对每一行进行排序.

(3)B=sort(A,dim,mode),mode为指定排序模式,mode"ascend",进行升序排序,"descend ",进行降序排序.

(4)[B,I]=sort(A,.....),I为返回的排序后元素在原数组中的行位置或列位置.


4、mat2cell

注意如果使用cell2mat,必须注意每个cell中的数据保证一个size。

c = mat2cell(x, m, n)

x代表要进行划分的矩阵,m划分的列,n为划分的行的类型。

c=mat2cell(x, [10 20 30], [25 25])

若x 为60*50的矩阵

    x                                       c

60*50                        10*25   10*25

                                  20*25    20*25

​                                  30*25     30*25


5、关于将cell的字符串转换成数字!

首先可用的方法很多,网上各式各样,找了好久发现有一个是最简单的:

str2double(cell),而且如果你的cell是一个多维的,不用单个字符串进行转换,直接

str2double()搞定!


6、strfind()

格式:idx=strfind(a,'1');

idx返回的是元素1在数组a中的位置。


7、删除某元素(暴力类型)

(1)字符串删除特定的字符

name(end-3:end)=[];%将name字符串最后三个字符删除。此处注意  .(点号)  算一个字符,空格算一个字符!

(2)删除数组里某一行或者列

array(i,:)=[];删除了array数组里第i行


0 0