精华内容
下载资源
问答
  • Matlab函数字符串更改

    2020-01-01 16:51:53
    我用Matlab写代码时候,经常想把许多重复性的操作写成函数,但是在Matlab有工作空间里可能存在命名冲突的问题,比如写一个画矩形的函数rectangle,Matlab里已经有这个函数了,一个解决的办法是把这些自己写的函数都...

    需求

    我用Matlab写代码时候,经常想把许多重复性的操作写成函数,但是在Matlab有工作空间里可能存在命名冲突的问题,比如写一个画矩形的函数rectangle,Matlab里已经有这个函数了,一个解决的办法是把这些自己写的函数都放到一个类里去当做静态函数调用,函数前面加上类名,就不会冲突了。
    类里写静态函数的方法有两个:

    1. 直接在类定义文件,即有classdef的文件里写
    classdef sp
      methods (Static)
      function [] = func1()
      end
      function [] = func2()
      end
      end
    end
    

    像上面这样写,就可以写很多个函数,调用的时候只要用sp.func1就行了。但这样会存在一个问题,如果函数的代码量很大的话,再把这些函数都写在类定义文件里就显得臃肿。
    2. 在类定义文件放在@class文件夹里,上面的就写@sp,在@sp文件夹里写的函数就只有sp类才能调用了,
    假设func1.m里写了函数

    	function [] = func1()
    	end
    

    那只要在类定义文件里加上

    classdef sp
    	methods (Static)
    	[] = func1()
    	end
    end
    

    就可以了,但是这样又有一个问题,假如函数的声明发生了变化,我又得把改变了的函数声明拷贝到类定义文件里,非常麻烦。所以我就想写一m文件,把改变了的函数声明用代码写到类定义文件里。

    实现思路

    将类定义文件sp.m中放函数声明的前面加上一句注释begin_of_out_file,末尾加一句注释end_of_out_file

    判断是否含有某个字符串
    contains(str1,str2)
    
    读取文本文件的行
    tline = fgetl(fid)
    

    一行一行读下来,发现有begin_of_out_file的时候,将@sp文件夹下的所有m文件读进来

    funcList = dir([input_path,'/*.m']);
            func_str = '';
            for k = 1:length(funcList)
                if strcmp(funcList(k).name,name)==0&&...
                        strcmp(funcList(k).name,new_name)==0     
                    fid = fopen(fullfile(funcList(k).folder,...
                        funcList(k).name),'r');
                    tline = fgetl(fid);                               
                    tline = strrep(tline,'function ',repmat(' ',1,8));
                    func_str = sprintf('%s%s\n',func_str,tline);
                end
            end
    
    删除字符串
    tline = erase(tline,'function ');
    
    替换字符串
    tline = strrep(tline,'function ',repmat(' ',1,8));
    

    读取所有函数的第一行,将function替换成空格,再写到新文件中去,同时,begin_of_out_file和end_of_out_file之间的将摒弃掉。

    注意事项

    1. 为了防止写错,留了个备份文件
    2. 本来最后想用movefile用新文件替换旧文件的,但报错文件正在使用

    完整代码

    clear;close all;clc
    %%
    input_path = 'E:\MatlabCode\Resonator\code\@sp\';
    %%
    name = 'sp.m';
    new_name = 'sp_1.m';
    orgname = fullfile(input_path, name);
    dstname = fullfile(input_path, new_name);
    backup_name = fullfile(input_path,'sp.txt');
    copyfile(orgname,backup_name);
    fr = fopen(orgname,'r');
    fw = fopen(dstname,'w');
    %%
    while true
        tline = fgetl(fr);
        if tline == -1
            break;
        end
        flag = contains(tline,'begin_of_out_file');
        if ~flag
            fprintf(fw,'%s\r\n',tline);       
        else
            fprintf(fw,'%s\r\n',tline);
            funcList = dir([input_path,'/*.m']);
            func_str = '';
            for k = 1:length(funcList)
                if strcmp(funcList(k).name,name)==0&&...
                        strcmp(funcList(k).name,new_name)==0
                    
                    fid = fopen(fullfile(funcList(k).folder,...
                        funcList(k).name),'r');
                    tline = fgetl(fid);              
                    tline = strrep(tline,'function ',repmat(' ',1,8));
                    func_str = sprintf('%s%s\n',func_str,tline);
                end
            end
            fprintf(fw,'%s\r\n',func_str);
            while 1
                tline = fgetl(fr);
                flag = contains(tline,'end_of_out_file');
                if flag == 1
                    fprintf(fw,'%s\r\n',tline);
                    break;
                end
            end
        end
        
    end
    %%
    fclose(fr);
    fclose(fw);
    %%
    movefile(dstname,orgname)
    
    展开全文
  • MATLAB字符串转换函数

    2020-08-19 04:30:59
    文章简单介绍了MATLAB字符串转换函数的运算过程
  • 本代码主要利用MATLAB工具实现MATLAB 将数值嵌入字符串示例,简单明了,易于理解
  • 函数 S = cell2char(C) % % 将字符串元胞数组的内容转换为字符% 大批。 单元格 C 的内容按元素读取,并且% 转换为长度为 MAXCOL 的字符数组,其中 MAXCOL 为% 数组中最长字符串的长度。 % 因此得到的字符数组 S 的...
  • 函数结果 = 压力(字符串) 返回带有特殊字符“转义”的字符串即,字符串“ Randy's wonton \ n%可口!” 变成“兰迪的馄饨 \\n %% 好吃!”。 因此,结果字符串适合打印出来并由 MATLAB 解释。 如果您是编写旨在...
  • 类似于字符数组,不过Matlab字符串是用单引号括起来的字符序列。也是以ASCII码形式存储。 >> str='LuYihang'; >> str(3:6) ans = 'Yiha' 注意:若字符串中的字符含有单引号,则该单引号字符要用两个...

    字符串表示

    类似于字符数组,不过Matlab中字符串是用单引号括起来的字符序列。也是以ASCII码形式存储。

    >> str='LuYihang';
    >> str(3:6)
    ans =
        'Yiha'
    

    注意:若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。

    >> str2='LuYi''hang'
    str2 =
        'LuYi'hang'
    

    字符串矩阵

    也可以建立多行字符串,形成字符串矩阵。

    >> ch=['a:f';'1:6']
    ch =    //可以看到字符串中相用a:f代替abcdef是不行的,a:f就是一个字符串
      2×3 char 数组
        'a:f'
        '1:6'
    >> ch(2,2)
    ans =
        ':'
    

    例题:建立一个字符串向量,然后对该向量做如下处理:
    1 取第1~5个字符组成的子字符串。
    2 将字符串倒过来重新排列。
    3 将字符串中的小写字母变成相应的大写字母,其余字符不变。
    4 统计字符串中小写字母的个数。

    >> ch='ABc123d4e56FG90';
    >> subch=ch(1:5)
    subch =
        'ABc12'
    //题目1
    >> revch=ch(end:-1:1)
    revch =
        '09GF65e4d321cBA'
    //题目2
    >> k=find(ch>='a'&ch<='z')
    k =
         3     7     9
    >> ch(k)=ch(k)-32
    ch =
        'ABC123D4E56FG90'
    //题目3  支持ASCII码
    >> length(k)
    ans =
         3
    //题目4
    

    字符串操作

    1. 字符串的执行
    格式: eval(s) s是字符串,作用是将字符串中的内容作为Matlab命令来执行,实现由键盘输入命令,而不是预先设置好命令,相比更灵活。

    >> t=pi;
    >> m='[t,sin(t),cos(t)]';
    >> m
    m =
        '[t,sin(t),cos(t)]'
    >> eval(m)
    ans =
        3.1416    0.0000   -1.0000
    

    2. 字符串与数值之间的转换
    abs和 double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
    char函数可以把ASCII码矩阵转换为字符串矩阵。

    >> s1='MATLAB';
    >> a=abs(s1)
    a =
        77    65    84    76    65    66
    >> b=char(a)
    b =
        'MATLAB'
    

    3. 字符串的比较
    字符串的比较有两种方法:利用关系运算符或字符串比较函数。
    关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。

    >> 'www 0'>='W1234'
    ans =
      1×5 logical 数组
    
       1   1   1   0   0
    

    使用关系运算符比较的前提:两个字符串的长度必须相等。

    字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:
    1 strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
    2 strncmp(s1,s2,,n):用来比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。
    3 strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等返回1,否则返回0。
    4 strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等返回1,否则返回0。

    >> strncmpi('www0','W123',1)
    ans =
      logical
    
       1
    

    4. 字符串的查找与替换
    strfind(s1,s2):返回字符串s2在字符串s1中的开始位置。
    strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。

    注意还有个findstr(s1,s2)函数,区别在于findstr函数中s1 s2无先后顺序区别,返回短字符串在长字符串中的开始位置。

    >> strfind('ababedabababedfg','bed')
    ans =
         4    12
    >> strfind('bed','ababedabababedfg')
    ans =
         []
    >> findstr('bed','ababedabababedfg')
    ans =
         4    12
         
    >> strrep('ababedabababedfg','bed','toy')
    ans =
        'abatoyababatoyfg'
    
    展开全文
  • matlab字符串操作函数

    万次阅读 2017-03-13 20:51:35
    matlab字符串操作函数积累记录 主要介绍了matlab字符串操作函数,相关的字符串操作对于平时的数据相关处理有较大的帮助

    matlab字符串操作函数积累记录(不定期更新)

    • eval() — 执行运行字符串的表达式
      对于matla的相关数据处理来说,eval()函数绝对是神器。本人目前用的最多的是对于变量的命名以及数据读取上面。利用for循环可以批量对变量进行读取和赋值,由此批量存取数据。
      如对变量a_1- a_10分别赋值1-10的数据,可以考虑eval()
    %code1
    for i = 1:10
        eval(['a_',num2str(i),'=i;'])
    end

    此处需要注意eval()函数内部对于字符串的拼接。

    • num2str()–将数字转换为字符串,由于主要接触的还是在科学计算方面,使用较多的还是在多变量批量命名上。类似的函数还有int2str,mat2str,str2double等,功能与之类似。
    • deblank() — 删除字符串的尾部空格
    • findstr() — 在长字符串中查找短的字符串,并返回相应位置(长短字符串不区分位置)
    %code2
    s = 'How much wood would a woodchuck chuck?';
    findstr(s,'a')    returns  21
    findstr('a',s)    returns  21
    findstr(s,'wood') returns  [10 23]
    findstr(s,'Wood') returns  []
    findstr(s,' ')    returns  [4 9 14 20 22 32]
    • isstr()判断变量是否为字符串
    • isletter()判断一个字符串是各个元素是否为字母,返回值为与字符串等长的0-1向量
    • isspace()判断字符串各个元素是否为空格符,返回值为与字符串等长的0-1向量
    • lower()和upper()与函数可以把字符串的所有字母转为小写和大写格式
    • strcat()把多个字符串水平方向依次连接
    • strvcat()字符串按数值方向连接
    • strjust(S,mode)按照格式调整字符串的对其方式,mode = ‘left’, ‘right’, ‘center’
      注意对于水平了解还有一种方式如code1的方式,在连接空格上处理方式如下
    %code3
    s1 = 'Red'; s2 = 'Green'
    S1 = [s1,'     ',s2]
    S2 = strcat(s1,char(127*ones(1,9)),s2)
    S3= strvcat(s1,s2)
    % S3中的返回结果按左对齐方式排列,右侧按最长字符的长度为准,短的行由空格符补齐
    S3 = strjust(S3,'center')
    • strcmp()比较两个字符串,完全相同时返回逻辑变量1,否则为0
    • strcmpi()忽略字母大小写的方式比较两个字符串
    展开全文
  • matlab字符串函数的用法

    千次阅读 2020-03-30 11:06:14
    字符串matlab中应用很多,下面就关于字符串的中级应用进行阐述。 disp函数,显示字符串,例如:disp(str); size函数,判断字符串长度,size(str); 对字符串反序输出,str2 = str(end:-1:1),其中-1和1分别是反序...

    字符串在matlab中应用很多,下面就关于字符串的中级应用进行阐述。
    disp函数,显示字符串,例如:disp(str);
    size函数,判断字符串长度,size(str);
    对字符串反序输出,str2 = str(end:-1:1),其中-1和1分别是反序输出的起始点和结束位置;
    将字符串输出为ASCII码,str_ascii = double(str);
    将两个字符串连接起来,str = [str1, str2],除此之外还可以通过strcat函数将两个字符串连接起来,s1 = strcat(str1, str2);
    strvcat函数,将多个字符串变为矩阵;
    建立字符串矩阵,s=[‘Boy’;‘boy’] ,需要注意的是,在建立字符串矩阵时,长度需要保持一致;
    利用char建立字符串矩阵式则不要长度一致,如 c=char(‘daxian’,‘yipintang’) ;
    建立字符串单元数组,celldata=cellstr©;
    strcmp函数,判断两个字符串是否相等,a = strcmp(str1,str2);
    strncmp函数,判断两个字符串前n个字符是否相等,a = strncmp(str1,str2,5),代表判断前5个字符是否相等;
    strfind函数,字符串查找函数,返回结果为该字符在字符串中的位置;
    strrep函数,字符串替换函数,a = strrep(str,‘zhangsan’,‘lisi’),使用lisi代替原先字符串中的zhangsan,如果在原字符串中没有zhangsan,则返回原先的字符串,也就是不替换。
    上述就是我们在日常使用中常用到的关于字符串的一些函数。不足之处还请大家进行补充。

    展开全文
  • matlab开发-读取数字字符串函数parse_numbers应用sscanf从分隔字符串中读取数字。
  • 主要介绍了一个字符串反转函数可实现字符串倒序,很简单,但很实用,感兴趣的朋友可以参考下
  • 零散MATLAB资料分享-Matlab字符串函数汇总.pdf 最近在用MATLAB做一个项目,自然需要查很多东西,在网上搜集了一点资料,并非原创。本着分享的精神,希望能帮助到部分人。 包括以下内容 在MATLAB图形用户...
  • 函数在两个数组中搜索相等的字符串,并给出仅出现在两个字符串数组之一中的字符串。 [iequal,i1,i2]=strcmp[s](S1,S2); iequal 分别为相等的字符串在 S1 和 S2 中的索引给出任何 nx2 数组。 i1 和 i2 指向只...
  • RANDOM_STRING - 生成随机字符串 当需要一个名字但没有提供时,不要害怕RANDOM_STRING 来了! 按配置返回随机一组大写字母(默认为 10 个长) 输入: @长度value - 要生成的随机字符串的长度默认 - 10 类型 - 整数@...
  • % 此函数 'uniqueStrCell' 对字符串的元胞数组执行 'UNIQUE'。 % 输出单元格 'out' 将仅包括字符串单元格和转换为字符串的数字单元格% ,并排除 NaN 和空单元格。 % 例子: % inputStrCell={'ek','wekf', 29, NaN,...
  • matlab中text函数在显示字符串时的使用方法
  • matlab截取字符串

    千次阅读 2020-12-15 11:15:04
    使用matlab截取固定位置字符串. 函数: 方法: 1.使用冒号 A = 'abcdabcd' B = A(2:3) B = A(4:end) B = [A(2:4), A(6)] 2.使用函数 strfind查找下标位置 A = 'abcdabcd' idx = strfind(A,'c') B = A(inx) ...
  • 功能说明此函数返回单个字符串字符串字符串的长度单元阵列或矩阵。 作者:须加藤雷 | 创建于:2017 年 8 月 12 日 | ray.sugato[at]gmail.com %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%% ...
  • matlab字符串做变量名

    千次阅读 2020-09-05 15:17:46
    a = 'c'; b = {3,4}; eval([a,'=b;']) % a是字符串 >>> c = {[3]} , {[4]}
  • string=array2string(array) 将元胞数组转换为可计算的字符串,例如 eval(...) 使用的字符串。 单元格可能包含字符串、矩阵、函数句柄和包含上述类和其他单元格的单元格。
  • matlab字符串拼接方法

    千次阅读 2020-09-04 09:57:39
    我们经常遇到字符串拼接,下面介绍三种字符串拼接的方法: 1.使用中括号[] 如: a = 'string_1'; b = 'string_2'; c = [a,b] 运行结果如下: 2.使用sprintf 我用常用fprintf可以格式化的数据打印,那sprintf...
  • 函数可用于从字符串元胞数组中消除重复的字符串元胞。
  • MATLAB实现字符串分割

    千次阅读 2019-07-04 17:21:28
    Matlab实现字符串分割(split) Posted on 2011/08/08 Matlab字符串处理没有C#强大,本身又没有提供OO特性,需要依赖别的手段完成这项任务。 我们在这里借助正则表达式函数regexp的split模式。一般语法: S = ...
  • https://blog.csdn.net/weixin_30838873/article/details/99976437
  • MATLAB字符/字符串操作函数大全

    万次阅读 多人点赞 2018-08-08 10:47:35
    利用给定的字符串或单元数组创建字符数组 double(S) 将字符串转化成 ASC 码形式 cellstr(S) 利用的给定的字符数组创建字符串单元数组 blanks(n) ...
  • 这两个函数根据一个或多个分隔符解析字符串(字符数组)或字符串元胞数组。 我将它设计为 strtok.m 的替代品,因为它作为字符串解析函数不符合我的期望或要求。 这些功能无疑需要进一步增强和改进,因此欢迎您提出...
  • 如果在字符串数组 S 的任何... 只需调用内置函数“contains”,即可轻松确定模式是否在字符串中。 所以,我为旧版本的用户创建了这个功能来搜索文本中的模式。 此函数遵循与“包含”相同的行为。 不再需要 for 循环。
  • MATLAB字符串处理

    千次阅读 2019-07-27 17:47:31
    MATLAB中,字符串是用单引号括起来的字符序列 若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示 建立多行字符串,形成字符串矩阵 字符串的操作 1)字符串的执行 格式:eval(s) 2)字符串与...
  • MATLAB 字符串操作函数 MATLAB中的字符串用单引号表示如abed如果想在字符串里包含一个单引号 怎么办用两个连着的单引号例如'It's sunn y'表示字符串It's sunny.四个连着的单 引号'表示内容为一个单引号的字符 length...
  • 我经常需要在文本文件中导入分成块的大型数据集。 每个数据块在其开头都有一个标头。 为了确定我需要开始导入数据的行,我编写了这段代码。... 我只是使用在此函数中找到的行号作为 textscan 函数的“SkipLines”。
  • MATLAB反转字符串的几种方法

    千次阅读 2020-09-19 21:07:46
    MATLAB反转字符串的几种方法 一、用for循环 1.1 s1=‘I like the letter E’; for n=1:length(s1) s2(n)=s1(length(s1)-n+1); end s2 1.2 s1=‘I like the letter E’; for n=1:size(s1,2) s2(size(s1,2)-n+1)=s1(n)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,014
精华内容 8,005
关键字:

matlab函数字符串

matlab 订阅