MATLAB cell中字符串的提取处理
直接对cell进行操作,不用提取。你这是个289*1的cell,每个cell里有182*24个元素,假设cell的名字叫a,你要提取第一行那个矩阵里的第一行,第一列的元素。使用a{1,1}(1,1)就可以了,以此类推都是一样的。
S = REGEXP(STRING,EXPRESSION)
其中EXPRESSION的取法为:
. Any character
[] Any character contained within the brackets
[^] Any character not contained within the brackets
\w A word character [a-z_A-Z0-9]
\W Not a word character [^a-z_A-Z0-9]
\d A digit [0-9]
\D Not a digit [^0-9]
\s Whitespace [
\f\v]
\S Not whitespace [^
\f\v]
那么你的问题就可以使用下面的代码了
>>a='5000.xls'
a =
5000.xls
>> s=a(regexp(a,'\d'))
s =
5000
这时的s是字符型的,如果你需要数字的话就是用str2num转化一下
祝你学习愉快!
其实不用这么麻烦寻找匹配,matlab自带了字符串查找函数strfind(str,patten),来查找str中是否有pattern,返回出现位置,没有出现返回空数组。
具体使用方式如下:
如果有一致的,则返回匹配字符串的起始位置,若没有一致,则返回空。
执行结果如下:
伏馨右旋: 具体操作如下:cell_string=textread('myfile.txt','%s','whitespace',''); 如果没有空格,可以去掉空格辨认如下 cell_string=textread('myfile.txt','%s'); 然后是读取第n到第n+10个字符 n=?; %这里n填入你需要的数值 string_s=cell_string{1}; %将读取的字符串从cell里存到字符串 %string_s里面 a=string_s(n:n+10); b=string_s(n+1:n+1+10);
迎江区18617629459: Matlab 如何提取cell里面的元素 - ?
伏馨右旋: l{1}(1),就能提取到a中第一个元素了,以此类推
迎江区18617629459: 请问用Matlab可以从字母数字组成的字符串中提取数字吗? - ?
伏馨右旋: MATLAB中字符串处理函数指令 中有个isletter,判断是否是字母 有个例子:str='Matlab R12.1';is_isletter=isletter(str) 结果是is_isletter =1 1 1 1 1 1 0 1 0 0 0 0 可见isletter的返回值是个矩阵,是字母的位置返回“1”,不是则返回“0” 因此你要的功能可以据此函数写出, 查找到为1的元素转为空矩阵后,将剩余的数字字符串转化为数值
迎江区18617629459: 用Matlab可以从字母数字组成的字符串中提取数字吗 - ?
伏馨右旋: str='abc3.14 1234 abcd 789 xyz 4.56 ew 22.6545678'; str1=regexp(str,'\d*\.?\d*','match') %cell 运行结果:str1 = '3.14' '1234' '789' '4.56' '22.6545678'
迎江区18617629459: matlab 处理字符串问题 - ?
伏馨右旋: 先把cell数组变成字符串矩阵,然后按列截取,转化成数字,例如:>> [n,str]=xlsread('1','Sheet1','A1:A3') n = [] str ='11:22:33' '11:22:34' '11:22:35'>> t=char(str) t =11:22:3311:22:3411:22:35>> hour=str2num(t(:,1:2)) hour = 11 11 11>> min=str2num(t(:,4:5)) min = 22 22 22>> sec=str2num(t(:,7:8)) sec = 33 34 35
迎江区18617629459: 在matlab中,读取一个字符串中的某个字符的问题 - ?
伏馨右旋: 首先你得确定字符串中数字出现的位置有什么相似的规律,有规律的话就好处理了.比如说数字永远出现在“为”之后,等等,或者说完全没有什么规律,那只能通过字符的ascII码值来判断是否是数字了,然后提取
迎江区18617629459: MATLAB中如何拆分及修改字符串 - ?
伏馨右旋: 用Matlab实现字符串分割(split):正则表达式函数regexp的split模式.一般语法:S = regexp(str, char, 'split') 其中str是待分割的字符串,char是作为分隔符的字符(可以使用正则表达式).分割出的结果存在S中.以下面这样一串字符为例 Hello...
迎江区18617629459: matlab 中 如何实现将字符串变量的值作为新的变量名 并对该新的变量名赋值 - ?
伏馨右旋: 上面的回答很正确了,无非就两个办法:1)就是把目录底下所有的mat文件都提取出来 file_name= dir('*.mat'); 除开file_name(1).name和file_name(2).name是.和..外,其他都是mat文件名.2)就是连续load,每次改变file_name for i=1:13 name= ['data1_al_',num2str(i),'__u']; load name;% your code; end 还有一个很笨的办法,就是load了以后,用eval(s)来执行一次,顺便赋值..(s是命令行)
迎江区18617629459: matlab cell型数据转换成string类型 - ?
伏馨右旋: matlab cell型数据转换成string类型,参考代码如下: names={'fyc','hy','ljg','lqf','lsl','ml','nhz','rj','syj','wl','wq','wyc','xch','xxj','yjf','zc','zdx','zjg','zl','zyf'}; len_names=length(names); names(1) for i=1:len_namesurl=strcat('D:\GaitDatasetA-silh\silhouettes\',names(i),'\00_1');url=url{1}; end
迎江区18617629459: matlab如何把cell换乘string - ?
伏馨右旋: 在matlab中调用strcat()函数获得的是一个cell类型的变量,而不是string类型.如果直接把这个cell类型的变量,传递到其他函数中作为string类型使用,就是出现问题,下面是一个例子: names={'fyc','hy','ljg','lqf','lsl','ml','nhz','rj','syj','wl','wq','wyc','...