Extract integer number from a cell array.
12 次查看(过去 30 天)
显示 更早的评论
Hi,
I need to extract only number from a cell array. For example, from the cell array given below I only need to take 17 out,
{'REMOVE UNIT 1 FROM BUS 17←'}
or from the following cell I need 459 and 496
{'OPEN BRANCH FROM BUS 459 TO BUS 496 CIRCUIT 1←'}. How can I do that?
Till now what I've done, I've split the cell into multiple cells on the basis of delimiter, like the following
16×1 cell array
{'OPEN' }
{'BRANCH' }
{'FROM' }
{'BUS' }
{0×0 char }
{0×0 char }
{0×0 char }
{'459' }
{'TO' }
{'BUS' }
{0×0 char }
{0×0 char }
{0×0 char }
{'496' }
{'CIRCUIT'}
{'1←' }
what happens, depending on the number of spaces in between the index of the numbers vary in different cases. How can I solve this issue in a better approach? Please let me know.
Thank you.
0 个评论
采纳的回答
Akira Agata
2019-10-2
编辑:Akira Agata
2019-10-2
If my understanding is correct, you are trying to extract numbers just after 'BUS'.
If so, how about the following?
% Original text
str =...
{'OPEN BRANCH FROM BUS 459 TO BUS 496 CIRCUIT 1←';...
'REMOVE UNIT 1 FROM BUS 17←'};
% Extract 'BUS + number'
data = regexp(str,'BUS\s+\d+','match');
% Extract number(s)
for kk = 1:numel(data)
data{kk} = regexprep(data{kk},'BUS\s+','');
end
The result is:
>> data{1}
ans =
1×2 cell array
{'459'} {'496'}
>> data{2}
ans =
1×1 cell array
{'17'}
更多回答(1 个)
James Tursa
2019-10-2
You could do this:
C = your cell array of strings, some containing numbers
d = str2double(C);
d = d(~isnan(d));
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 String 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!