MATLAB Answers


Replacing character withing an cell using cellfun

Asked by Patrick
on 5 Jun 2018
Latest activity Commented on by Walter Roberson
on 11 Jun 2018
I have a cell array called "ImpactTime" within a table called "hits" (see figure below). I'm attempting to change the 6th character in ImpactTime from a "." to a ":". I'm aware I can do this with a for loop
for i = 1:length(hits.ImpactTime);
I was wondering if there was a way I could accomplish this using cellfun. I've tried a few methods but it won't allow me change a specific subset within each cell.
I have tried the following
hits.ImpactTime = cellfun(@(x) ':', hits.ImpactTime{:}(6))


Sign in to comment.

1 Answer

Answer by Walter Roberson
on 5 Jun 2018
 Accepted Answer

hits.ImpactTime = regexprep( hits.ImpactTime, '\.(\d\d\d)', ':\1');
Note that this assumes that there are always exactly three digits after the . that is to be replaced and assumes that pattern does not occur anywhere else in the input string.


Thanks this worked perfectly. I was a little surprised it wasn't possible with cellfun.
hits.ImpactTime = cellfun(@(S) [S(1:end-4), ':', S(end-2:end)], hints.ImpactTime, 'uniform', 0);

Sign in to comment.