Using cellfun to extract numbers from strings in a cell array

3 views (last 30 days)
KostasK
KostasK on 4 Nov 2021
Answered: Yongjian Feng on 4 Nov 2021
Hi all,
I currently have the following code which extracts numbers from strings found within a cell array.
Cel = {'1-2-3-4-5-6' '5-6-7-8'} ;
fun = @(X) cellfun(@(C) abs(sscanf(C,'%d')), X, 'Un', 0) ;
xx = fun(Cel)
This works great. But my problem is that I have a case in my cell array with empty cells, like so:
Cel = {'1-2-3-4-5-6' '5-6-7-8' [] []} ;
fun = @(X) cellfun(@(C) abs(sscanf(C,'%d')), X, 'Un', 0) ;
xx = fun(Cel)
I would like for the code to return xx = {[1 2 3 4 5 6] [5 6 7 8] [] []}, but obviously since my function does not work with empty cells, I get an error.
So I would like to know what alternatives do I have such that I can accomplish the above?

Accepted Answer

Yongjian Feng
Yongjian Feng on 4 Nov 2021
How about this:
Cel = {'1-2-3-4-5-6' '5-6-7-8' [] []} ;
xx = cellfun(@(x) foo(x), Cel, 'Un', 0);
function ret = foo(x)
ret = [];
if ~isempty(x)
ret = abs(sscanf(x, "%d"));
end
end

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!