-
MATLAB字符串数组中查找指定子串
2014-11-12 16:14:291. strfind Find one string within another Syntax k = strfind(str, pattern); ...2. 如果使用的cell并且比较麻烦,可以自己写查找函数 id = zeros(0,1); for i=1:size(txt,1)1. strfind
Find one string within another Syntaxk = strfind(str, pattern); k = strfind(cellstr, pattern);
2. 如果使用的cell并且比较麻烦,可以自己写查找函数id = zeros(0,1); for i=1:size(txt,1) if strcmp(txt{i},'str') id(end+1) = i; end end
-
Matlab 字符串比较(实现类似 C 语言中 strcmp 的功能)+ 数字矩阵转字符串(元胞)+ 查找一个字符串在一个...
2021-03-13 17:03:52一个matlab函数,可以实现类似 C 语言中 strcmp 的功能、数字矩阵转字符串或元胞矩阵、查找一个字符串在字符串矩阵或元胞矩阵中的索引1、字符串比较
今天遇到一个问题,想用Matlab比较两个字符串的大小,以为用
>、<、==
即可,谁知道这些比较符号返回的是一个逻辑矩阵(并且一般还要求两个字符串长度一致),在网上搜了下说加all()、any()
即可。确实,all的意思是 【所有的都】,any的意思是【只有一个就】,但是不能判断谁大谁小,matlab自带的strcmp只能判断两个字符串是否相等(相等为真,否则为假),也不能判断谁大谁小,偶然发现一个前辈写了个函数,这个函数的功能类似于C语言中的strcmp:- str1>str2, return 1
- str1==str2, return 0
- str1<str2, return -1
做点摘抄,以防下次再次入坑,函数如下:
function p=mstrcmp(str1,str2) k=min(length(str1),length(str2)); for n=1:k %Compare the top k if(str1(n)>str2(n)) p=1;break; elseif(str1(n)==str2(n)) p=0; else p=-1;break; end end if(p==0) if(length(str1)>length(str2)) %The first k bits are equal, but str1 is longer p=1; elseif(length(str1)==length(str2)) p=0; else p=-1; end end end
2、数字矩阵转字符串(元胞)矩阵
补于2021.3.23
字符串矩阵function satlist=num2sat_char(sys,num) %this function can trans numList to charSatList satlist=[]; for i=num satlist=[satlist;sys,num2str(i,'%02d')]; end end
元胞矩阵
function satlist=num2sat_cell(sys,num) %this function can trans numList to cellSatList satlist={}; for i=num satlist=[satlist,cellstr([sys,num2str(i,'%02d')])]; end end
3、查找位置
补于2021.3.23
1 字符串矩阵
function prn=find_sat_char(satlist,sat) %this function can find the sat index from a charSatList n=size(satlist,1); prn=0; for i=1:n if mstrcmp(satlist(i,:),sat)==0 prn=i; break; end end end function satlist=num2sat_char(sys,num) %this function can trans numList to charSatList satlist=[]; for i=num satlist=[satlist;sys,num2str(i,'%02d')]; end end function p=mstrcmp(str1,str2) %this function can strcap two str(>1 =0 <-1) k=min(length(str1),length(str2)); for n=1:k %Compare the top k if(str1(n)>str2(n)) p=1;break; elseif(str1(n)==str2(n)) p=0; else p=-1;break; end end if(p==0) if(length(str1)>length(str2)) %The first k bits are equal, but str1 is longer p=1; elseif(length(str1)==length(str2)) p=0; else p=-1; end end end
调用:
num=[1:3,5:32]; sys='G'; satlist=num2sat_char(sys,num); sat='G30'; prn=find_sat_char(satlist,sat) %29 sat='G0'; prn=find_sat_char(satlist,sat) %0 can't find
ps:一看就知道我搞卫星的。
2 元胞矩阵
function p=mstrcmp(str1,str2) %this function can strcap two str(>1 =0 <-1) k=min(length(str1),length(str2)); for n=1:k %Compare the top k if(str1(n)>str2(n)) p=1;break; elseif(str1(n)==str2(n)) p=0; else p=-1;break; end end if(p==0) if(length(str1)>length(str2)) %The first k bits are equal, but str1 is longer p=1; elseif(length(str1)==length(str2)) p=0; else p=-1; end end end function satlist=num2sat_cell(sys,num) %this function can trans numList to cellSatList satlist={}; for i=num satlist=[satlist,cellstr([sys,num2str(i,'%02d')])]; end end function prn=find_sat_cell(satlist,sat) %this function can find the sat index from a cellSatList n=length(satlist); prn=0; for i=1:n if mstrcmp(satlist{i},sat)==0 prn=i; break; end end end
调用:
num=[1:3,5:32]; sys='G'; satlist=num2sat_cell(sys,num); sat='G30'; prn=find_sat_cell(satlist,sat) %29 sat='G0'; prn=find_sat_cell(satlist,sat) %0
-
MATLAB字符串学习笔记
2018-08-15 17:04:54MATLAB字符串 在使用MATLAB时经常会遇到对字符或字符串的操作。本章将对MATL AB的字符串函数进行详细的介绍。字符串是指1X n的字符数组。 在MATLAB软件中提供了很多的字符或字符串操作方法和函数,包括字符串...MATLAB字符串
在使用MATLAB时经常会遇到对字符或字符串的操作。本章将对MATL AB的字符串函数进行详细的介绍。字符串是指1X n的字符数组。
在MATLAB软件中提供了很多的字符或字符串操作方法和函数,包括字符串的创建、字符串的属性、比较、查找以及字符串的转换和执行等。
字符串处理函数
在MATLAB中,单个字符是按照Unicode编码存储的,每个字符占两个字节。MATL.AB内部按照字符的编码数值对字符串进行运算。字符和字符串是MATLAB语言的重要组成部分,MATLAB提供了强大的字符串处理功能,下面对常用的字符串处理函数进行详细的介绍。
字符串基本属性
在MATLAB中,对字符串的设定非常的简单,只需要用单引号(')将需要设定的字符串括起来。
通过函数disp():对字符串进行显示。
通过函数size( ): 取得该字符串的长度。
通过函数double( ):将字符串以ASCI|码显示。
通过函数char( ): 将ASCII码以字符串显示。
字符串的构造
在MATLAB中,创建字符串非常的简单,将字符串中的字符放到一对单引号之间即可。该单引号必须是在英文状态下输入的。多个字符串可以构成字符矩阵,但是矩阵的每行字符数必须相等。
函数strcat( )和函数strvcat( )对字符串进行连接。
函数strcat()将多个字符串连接成行向量,字符串首尾连接在一起, 形成一个新的字符串。
函数strvcat( )将多个字符串连接成列向量。
字符串的比较
在MATLAB中,对两个字符串进行比较采用函数strcmp( )和函数strncmp(),‘下 面分别进行介绍:
函数strcmp( )的调用格式为n=strcmp(str1, str2), 该函数比较字符串str1和字符串str公是否相等,如果相等,函数返回值为1;当不相等时,返回值为0。
函数strncmp( )的调用格式为n=strncmp(str1, str2, k),该函数比较字符串str1和字符串str2的前k个字符是否相等。如果相等,返回值为1;当不相等时,返回值为0。该函数区分字符的大小写。
函数strncmpi( )的调用格式为n=strncmpi(str1, str2, k),和函数strncmp( )基本-样。该函数和函数strncmp( )的不同之处是,该函数不区分字符的大小写。
字符串的查找和替换
字符串的查找和替换时字符串操作的一项重要内容,在MATLAB中提供了函数findstr( )(这个函数在有可能会被去掉,不建议使用)、strfind( )、和strrep()等函数来实现对字符串的查找和替换操作。
findstr(s1,s2)--在较长的字符串中查找较短的字符串出现的次数,并返回其位置,因此无论s1,s2哪个为长字符串,位置在前在后都没有关系。
函数strfind( )的调用格式为k=strfind(text, pattern),在text字符串中查找pattern字符或字符串,当查找成功后返回第一个相同字符的具体位置。
函数strrep( )的调用格式为S=strrep(S1, S2, S3), 该函数会将字符串S1中的子串S2都替换为S3,然后返回到字符串S中。
字符串的转换
在MATL AB中, 可以使用函数num2str( )、int2str( )、
str2num( )和str2double( )等实现字符串和数值之间的相互转换。下面分别进行介绍:
函数t=num2str(X):函数将数字X转换为字符串t。如果输入参数X为矩阵, 则转换为一一个字符串矩阵。该函数也可以指定数字的精度,调用格式为t=num2str(X, n),其中t的精度为n位。
函数t= int2str(X), 该函数将整数X转换为字符串。如果X不是整数,先将X取整,然后再转换为字符串。
函数x=str2num(S),该函数将字符型矩阵S转换为-一个数字矩阵。
函数x=str2double(S),该函数将字符串转换为双精度的数值。
函数str=mat2str(mat),该函数将数组或矩阵转换为对应的字符串。
t1=num2str(randn(3,3)*100) %将数字转换为字符串
pi=num2str(pi,6) %只显示6位
t2=int2str(randn(3,3)) %先取整,然后转换为字符串
x1=str2num(t2) %将字符串矩阵转换为数字矩阵
x2=str2double('123+45i') %将字符串转换为双精度数值
str=mat2str(magic(3)) %将矩阵转换为字符串
b=dec2bin(254) %将十进制数转换为二进制
h=dec2hex(234) %将十进制数转换为十六进制
d1=hex2dec('2B') %将十六进制转换为十进制
d2=bin2dec('1000101') %将二进制转换为十进制
字符的分类
在MATLAB中,字符串中的字符通常可以分为空白字符、字母字符和其他类型的字符。可以通过函数isspace()和函数isletter( )对字符串中的字符进行分类。下 面分别进行介绍:
函数isspace(S):字符串S进行分类,如果为空白字符,返回值为1,; 否则返回值为0;
函数isletter(S),对字符串S进行分类,如果为字母字符, 返回值为M;否则返回值为0。
这两个函数是对每一个字母进行判断
字符串的执行
MATLAB表达式可能包含在字符串中,‘下面详细介绍如何执行这些包含在字符串中的表达式。在MATLAB中提供了三个 函数eval( )、evalc( )和evalin( ),可以执行字符串中包含的MATLAB程序。
函数eval( )的调用格式为: eval('expression'):在该函数中expression为包含MATLAB表达式的字符串。
其他操作
在MATLAB中通过函数upper( )可以将字符串转换为大写字母。
函数lower( )将字符串转换为小写字母。
利用函数ischar()判断是否为字符,如果为字符则返回值为1, 否则返回值为0。
在MATLAB的命令窗口,输入命令“help strfun”,可以显示所有的字符串操作函数。
-
matlab开发-查找编号字符串
2019-08-26 16:57:16matlab开发-查找编号字符串。查找字符串中的Flaoting点数,包括:复数、实数、整数和货币(美元)。 -
Matlab之字符串的查找(findstr)与替换(strrep)
2020-02-15 10:46:481、函数功能: findstr(s1, s2):返回短字符串在长字符串中的位置。 strrep(s1, s2, s3):将字符串s1中所有子字符串s2替换为s3。...findstr(s1,s2) %查找短字符串在长字符串中的位置,s1、s2位置可互换 s3 = s...1、函数功能:
findstr(s1, s2):返回短字符串在长字符串中的位置。
strrep(s1, s2, s3):将字符串s1中所有子字符串s2替换为s3。
2、代码示例:
clc; clear all; s1 = 'mmmatlabmatlab'; s2 = 'mat'; findstr(s1,s2) %查找短字符串在长字符串中的位置,s1、s2位置可互换 s3 = strrep(s1,s2,'MAT') %将s1中的mat替换成MAT,并存储到s3中
运行结果:
ans =
3 9
s3 =mmMATlabMATlab
-
matlab开发-查找字符串文本文件
2019-08-26 09:38:19matlab开发-查找字符串文本文件。在文本文件中搜索字符串 -
matlab-基础 strfind 查找字符串中是否存在指定字符
2019-02-16 16:41:00matlab : R2018a 64bit OS : Windows 10 x64 typesetting : Markdown blog : my.oschina.net/zhichengjiu gitee : gitee.com/zhichengjiu code clear clc a='abcdefg' strfind... -
matlab中关于字符串的操作
2021-04-08 22:39:26单引号引起来: 字符串矩阵 ...matlab字符串小写大写转换 eval函数:使得表达式执行 字符串比较 (1)利用关系运算符比较 (2)利用strcmp函数 字符串的查找与替换 例子: -
matlab 查找字符串中第一个不为空格的_【Python技术入门8】Python字符串使用详解...
2020-12-04 08:17:18在Python中,字符串是由0个或多个字符组成的不可变序列。简单点说,字符串就是由⼀对双引号 " 或者 ⼀对单引号 ' 括起来的一串字符。01字符串的定义1)双引号定义>>> str1 = "人生苦短,我用Python">>&... -
matlab中字符串单元数组和结构体
2020-09-14 21:12:171.字符串的比较:字符串的比较主要为比较两个字符串是否相同,字符串中的个别字符是否相同 strcmp(str1,str2) ——比较字符串1和字符串2是否一样 strncmp(str1,str2,n) ——比较字符串1和字符串2的前n个字符是否一样... -
matlab截取字符串
2015-07-02 10:50:19刚想截取一个matlab字符串中间的一段字符,网上搜了一下,发现strfind这个函数是matlab用来查找字符串中的字符的。 help strfind得到的结果: strfind Find one string within another. K = strfind(TEXT,PATTERN... -
matlab 查找字符串中第一个不为空格的_「LeetCode算法」第8题字符串转换整数(难度中等)...
2020-11-24 00:58:44题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之... -
[Matlab] 如何在矩阵中查找特定的字符串
2016-09-04 09:43:00怎样查找A中字符串的是否含有字符串"bd3",如有返回字符串所在的行号和列号。 解决办法 使用 strcmp(A,'YourKeyString') >> A = {'abcd','efgh','ijkl'; 'bd3','skge','zxe2'}[i,j] = fi... -
MATLAB中字符串处理函数指令
2010-08-23 14:52:00字符串处理 函数名 功能描述 strings Matlab字符串函数说明 upper 字符串大写 isstr 字符串判断 lower 字符串小写 deblank 删除结尾空格 isletter 字母判断 str2mat 字符串... -
matlab 查找字符串中第一个不为空格的_替换空格(剑指offer第三题)
2020-12-03 23:56:58替换空格题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000解题思路看到题目我们先想到最暴力的解法... -
Matlab中测试空字符串和缺失值
2020-06-19 15:05:28测试空字符串和缺失值 ...因此,contains等函数始终会在其他字符串中查找空字符串。字符串数组还可以包含缺失值。字符串数组中的缺失值显示为<missing>。要查找字符串数组中的缺失值,请使用ismissing函数... -
MATLAB(5)--字符串处理
2020-07-29 23:55:16若字符串中的字符含有单引号,则该单引号字符要用两个单引号表示。 建立多行字符串,形成字符串矩阵,因为是矩阵,要求各行字符数要相等,也就是列数要相同,当各行字符数不相等时,就要用空格调节各行的长度,使... -
matlab 查找字符串中第一个不为空格的_excel文本函数应用:单元格中的数字和字母,如何判断?...
2020-12-03 13:40:49在规范编码、密码、用户名的时候,我们经常要查证某一类字符串是否包含数字、英文、数字与英文的组合,甚至字符串的开头是否是数字等。很简单,利用Code、Char、Find、Search文本函数搭配Count函数即可解决这个问题... -
Matlab(7)——字符串处理
2020-03-11 21:48:34Matlab(7)——字符串处理 文章目录Matlab(7)——字符串处理一、字符串的表示二、字符串的...取子串:字符串变量名(m:n)若字符串中含有单引号,那么这个单引号要用两个单引号来表示 也可以建立多行字符串,形成字符... -
matlab怎么在元胞数组中查找字符串 与strfind()和findstr()不同 (推荐!)
2019-04-19 15:30:02我们知道在字符串中寻找匹配的字符串可以用strfind() 和findstr() 两个函数,但是通过xlsread函数从Excel中导出的数据为元胞,这样就不能使用strfind函数了,这种情况下有两种办法。 1、用ismember()函数,这个... -
学习matlab(二)——字符串分析
2020-02-06 19:04:50在MATLAB软件中提供了很多的字符或字符串操作方法和函数,包括字符串的创建、字符串的属性、比较、查找以及字符串的转换和执行等。 在MATLAB中,单个字符是按照Unicode编码存储的,每个字符占两个字节。MATLAB内部... -
MATLAB-1-7字符型数据(字符串)
2020-05-25 12:39:41字符型数据1. 字符串的表示2. 字符串的操作1)字符串的执行2)字符串与数值间转换3)字符串的比较i. 关系运算符ii. 字符串比较函数4)字符串...若字符串中的字符含有单引号,则该单引号字符要用两个单引号表示 >&g -
matlab ---字符串操作
2018-02-19 21:51:12strcmp 字符串比较,后者忽略字母大小写 sscanf 格式化从字符串中读取数据 regexp,regexpi :匹配正则表达式,后者忽略大小写 regexprep 使用正则表达式替换字符串 regexptranslate 将私服穿转化为正则表达式** &...