how can remove words and split in cellarray in matlab

for example x={'100614,Peter Beadle,131542'}; i want x= [100614,131542] my dataset have 408934 record like 'x'

 채택된 답변

Paolo
Paolo 2018년 6월 10일
편집: Paolo 2018년 6월 10일
For input:
x = {'100614,Peter Beadle,131542'}
You can use regexp to match numerical entries in your cell. The expression below matches numbers from 0-9 for 6 times since the numbers in your cell have exactly 6 digits.
x={'100614,Peter Beadle,131542'};
[tokens,matches] = regexp(x,'[0-9]{6}','match');
x = str2double(tokens{:});
For input:
x = {'100614','Peter Beadle','131542'}
Use the following:
x = {'100614','Peter Beadle','131542'};
x = str2double(x);
x(isnan(x)) = [];

댓글 수: 10

>> x = str2double(tokens{:});
  • Error using str2doubleToo many input arguments.
  • not answered.....why?
Paolo
Paolo 2018년 6월 10일
편집: Paolo 2018년 6월 10일
Is your x definitely
x={'100614,Peter Beadle,131542'}
and not
x={'100614','Peter Beadle','131542'}
?
Stephen23
Stephen23 2018년 6월 10일
편집: Stephen23 2018년 6월 10일
str2double only accepts one input argument, so this
str2double(tokens{:})
will not work if tokens contains multiple cells. str2double's one input argument may be cell array, so perhaps you meant to use that:
tokens = vertcat(tokens{:});
str2double(tokens)
str2double(tokens{:})
returns the correct array.
str2double(tokens)
returns NaN.
At least on my machine with 2017b. I suspect that her input is not a single cell but rather a cell array.
yes, tokens contain multiple cells
If your input x is:
x={'100614','Peter Beadle','131542'}
Then use:
x = {'100614','Peter Beadle','131542'};
x = str2double(x);
x(isnan(x)) = [];
If you confirm that's the format of your input, I'll edit my answer.
thanks for answering,.... What should I do now?
@Ava,
I have modified my answer. It now contains a solution for both inputs. If the problem is solved you can accept my answer. Consider perhaps adding the other input to your question.
Ava persiangulf
Ava persiangulf 2018년 6월 10일
편집: Stephen23 2018년 6월 10일
that's answered for me but make change data in my dataset, for example, x=[8213430049,100573,100614] change to x=[8.213430049100573] .... but your answer was very helpful and thank you very much
You are welcome. In that case, try using:
x = [8213430049,100573,100614];
x = num2str(x);
x = strsplit(x,' ');
x = str2double(strcat(x{1}(1),'.',x{1}(2:end),x{2}));
x = 8.213430049100573

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Data Type Conversion에 대해 자세히 알아보기

질문:

2018년 6월 10일

편집:

2018년 6월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by