数学建模社区-数学中国

标题: 字符串函数 [打印本页]

作者: 森之张卫东    时间: 2015-7-13 22:24
标题: 字符串函数
1.4        字符串函数
1.4.1        函数简介
在MATLAB程序设计中,在处理数据的输入与输出时,字符串函数是比较常用的。
表        字符串操作函数
函数名        调用格式        功能
strcat        T=STRCAT(S1,S2,S3,..)         连接字符串
strvcat        S=STRVCAT(T1,T2,T3,..)        垂直连接字符串
strcmp        STRCMP(S1,S2)        比较字符串,S1与S2相同返回1,不同则返回0,区别大小写
strncmp        STRNCMP(S1,S2,N)        比较2字符串的前N个字符,区别大小写
strcmpi        STRCMPI(S1,S2)        比较字符串,忽略大小写
strncmpi        STRNCMPI(S1,S2,N)         Compare first N characters of strings ignoring case. 不区别大小写
findstr        K = FINDSTR(S1,S2)        寻找较短的字符串在较长字符串中的位置索引
strjust        T=STRJUST(S)
T= STRJUST(S,'right')
T= STRJUST(S,'center')
T= STRJUST(S,'left')        调整字符串
strmatch        I = STRMATCH(STR,STRS)         在字符串矩阵STRS中寻找以STR开头的字符串
strrep        S = STRREP(S1,S2,S3)         将S1中包含的字符串S2替换为S3,要区分大小写
strtok        STRTOK(S)
[t,r]=STRTOK(S,D)        返回字符串中除去开始的空白串的第一个标记字符串

upper        B = UPPER(A)         将字符串转换成大写
lower        B = LOWER(A)        将字符串转换成小写

字符串与数值转换函数
函数名        调用格式        功能
num2str        t=num2str(x)
t=num2str(x,n)
        将数值转换成字符串
n表示转换精度
int2str        s = int2str(x)        将整数转换成字符串
mat2str        str=mat2str(mat)        将矩阵mat转换成可以计算的字符串
str2double        x=str2double(s)        将字符串转换成双精度数
str2num        x=str2num(s)        将字符串矩阵转换成数值矩阵
sprintf        [s,errmsg]=sprintf(format,a,…)        format是格式化字符串,a,..是矩阵参数,errmsg是可选的
sscanf        [a,count,errmsg,nextindx]=sscanf(s,format,size)
        Count,errmsg,nextindex,size是可选的输入、输出参数
Size指定所读的元素个数,若没有则整个字符串都读取
1.4.2        例子
例子1:
num2str(randn(2,2),3)
输出:
ans =
-0.433     0.125
-1.67     0.288
例子2:
mat=magic(3)
str=mat2str(mat)
matnew=eval(str)
输出:
mat =
     8     1     6
     3     5     7
     4     9     2
str =
[8 1 6;3 5 7;4 9 2]
matnew =
     8     1     6
     3     5     7
     4     9     2
其它函数:
    char(x)        - 将x中非负数转换成字符
    double(x)      - 将x转换成双精度类型数据
blanks(n)      - 生成n个空格字符
deblank(s)     - 删除s末尾的空格
    eval(s)        - 计算Matlab字符串s
字符测试:
    ischar(s)      - 属于字符则返回1,否则返回0
    isletter(s)    - 属于字母则返回1,否则返回0
    isspace(s)     - 属于空白字符则返回1,否则返回0.
文件操作函数
1.4.3        文件处理函数
matlab\iofun
格式化的文件 I/O函数
    fgetl       - 从文件中读取一行数据,不保留行结束符
    fgets       - 从文件中读取一行数据,保留行结束符
    fprintf     - 将格式化的数据写到文件
    fscanf      - 从文件中读取格式化的数据
    input       - 输入函数
    textread    - 从文件读取格式化的数据
  字符串转换函数
    sprintf     - 将数据格式化成字符串
    sscanf      - 按照格式从字符串种读取数据
strread     - 从文本字符串种读取格式化数据
  文件打开、关闭函数
    fopen       - 打开文件
    fclose      - 关闭文件
  二进制文件 I/O函数
    fread       - 从文件读取二进制数据.
    fwrite      - 将二进制数据写到文件中去
  文件位置函数
    feof        - 测试是否到文件结尾
    ferror      - 查询文件错误状态
    frewind     - 将文件位置指示到文件开始
    fseek       - 设置文件位置指示器
    ftell       - 获得文件位置指示器
1.4.4        读取格式化文件例子
现有一个文本文件data.txt,其数据内容如下,每行有固定格式,均有5个数,
文件内容如下:
20020101        31        25        30   23
20020101        35        35        40   25
20020101        45        29        60   30
20020101        65        75        80   40
现要将该文件数据读入矩阵中,读取该文件的程序如下(flread.m)
fid=fopen('data.txt','rt');
if fid<0
   sprintf('failure for reading file day.txt')
   return
end
row=0;
while ~feof(fid)
   str=fgets(fid);
   row=row+1;
   if row>1,
      m(row,=str2num(str);
   else
      m=str2num(str);
   end
end
fclose(fid);
输出:
说明:
由于是逐行读取,所以要判断是否读完,使用函数feof判断
fgets:读取一行的字符串
如果有些行在最后少了数据,则原来的程序会出错,出错行为下面的语句:
m(row,=str2num(str)
该行可改写为两行:
tmp=str2num(str);
m(row,1:length(tmp))=tmp






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5