Replacing character withing an cell using cellfun

조회 수: 15 (최근 30일)
Patrick
Patrick 2018년 6월 5일
댓글: Walter Roberson 2018년 6월 11일
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);
hits.ImpactTime{i,1}(6)=':';
end
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))

채택된 답변

Walter Roberson
Walter Roberson 2018년 6월 5일
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.
  댓글 수: 2
Patrick
Patrick 2018년 6월 11일
Thanks this worked perfectly. I was a little surprised it wasn't possible with cellfun.
Walter Roberson
Walter Roberson 2018년 6월 11일
hits.ImpactTime = cellfun(@(S) [S(1:end-4), ':', S(end-2:end)], hints.ImpactTime, 'uniform', 0);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Cell Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by