Matlab 从字符串的单元格数组中读取特定字符
我有一个维度为1x6的单元格数组,如下所示:Matlab 从字符串的单元格数组中读取特定字符,matlab,cell-array,Matlab,Cell Array,我有一个维度为1x6的单元格数组,如下所示: A = {'25_2.mat','25_3.mat','25_4.mat','25_5.mat','25_6.mat','25_7.mat'}; 例如,我想从A{1}中读取'后面的数字,即2,用于我的示例使用,以及 它是如何工作的? 这段代码只是在出现'.之后查找字符1的索引。我们把它称为start\u index。然后查找比字符出现索引小一个数的字符。字符。我们把它称为end\u index。然后检索start\u index和end\u ind
A = {'25_2.mat','25_3.mat','25_4.mat','25_5.mat','25_6.mat','25_7.mat'};
例如,我想从A{1}
中读取'
后面的数字,即2
,用于我的示例使用,以及
它是如何工作的?
这段代码只是在出现'.
之后查找字符1的索引。我们把它称为start\u index
。然后查找比字符出现索引小一个数的字符。
字符。我们把它称为end\u index
。然后检索start\u index
和end\u index
之间的所有字符。最后使用str2double
将这些字符转换为数字
样本输入:
A = {'2545_23.mat','2_3.mat','250_4.mat','25_51.mat','25_6.mat','25_7.mat'};
>> out
out =
23 3 4 51 6 7
输出:
A = {'2545_23.mat','2_3.mat','250_4.mat','25_51.mat','25_6.mat','25_7.mat'};
>> out
out =
23 3 4 51 6 7
您可以使用大括号
{…}
访问单元格内容。一旦访问了内容,就可以像使用普通数组一样使用索引访问字符串的元素。例如:
test = {'25_2.mat', '25_3.mat', '25_4.mat', '25_5.mat', '25_6.mat', '25_7.mat'}
character = test{1}(4);
如果字符串长度是可变的,则可以使用
strfind
查找所需字符的索引。假设数字是符号后的非负整数:使用正则表达式,然后从字符串转换为数字:
numbers = cellfun(@(x) str2num(x{1}), regexp(A, '(?<=\_)\d+', 'match'));
numbers=cellfun(@(x)str2num(x{1}),regexp(A,'(?这对1到9很好,一旦我有了,例如25|10.mat | 25|11.mat…它返回:11,但我想要:10 11,所以最后我想要使用相同的函数:2 3 4 5 6 7 8 9 10 11等…@Devel为此编辑。你能检查一下吗?如果我只想要一个数字,请再问一个问题示例A(1)我的意思是我只想要“2”如何处理?@Develout(1)
应该做。在代码之后添加它。(您可以对任何单元格编号执行此操作)