QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 969|回复: 0
打印 上一主题 下一主题

字符串函数

[复制链接]
字体大小: 正常 放大

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-7-13 22:24 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    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

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-6-11 11:54 , Processed in 0.336520 second(s), 54 queries .

    回顶部