How to Convert a column with Char in Cell matrice to Number?
조회 수: 5 (최근 30일)
이전 댓글 표시
- I have a cell array:
A =
'Time' 'Name' 'Location' 'Duration' 'Remarks'
'100' 'John' 'Abc' '1000' 'Nill'
'101' 'Tim' 'Def' '1000' 'Nill'
'102' 'Tom' 'Ghi' '2000' 'Nill'
'103' 'Jim' 'Jkl' '4500' 'Nill'
Here I want to convert A(2:4, 1), and A(2:4, 4) to numbers and save to same matrice A.
I can do this using a LOOP and STR2DOUBLE(), but it is very time consuming when the matrice is very large.
Is there any method to convert a range of char-values in a cell matrice to to numbers?
I am looking for someting like:
A(2:4, 1) = str2double( A(2:4, 1) ) %This command is not working
A(2:4, 4) = str2double( A(2:4, 4) ) %This command is not working
- Output should look like:
A =
'Time' 'Name' 'Location' 'Duration' 'Remarks'
100 'John' 'Abc' 1000 'Nill'
101 'Tim' 'Def' 1000 'Nill'
102 'Tom' 'Ghi' 2000 'Nill'
103 'Jim' 'Jkl' 4500 'Nill'
댓글 수: 0
채택된 답변
Stephen23
2019년 4월 16일
편집: Stephen23
2019년 4월 16일
You almost got it right, you just need to split the numeric array into a cell array so that it can be allocated back to the cell array A:
A(2:4,1) = num2cell(str2double(A(2:4,1)))
A(2:4,4) = num2cell(str2double(A(2:4,4)))
Or simply on one line:
A(2:4,[1,4]) = num2cell(str2double(A(2:4,[1,4])))
추가 답변 (1개)
KSSV
2019년 4월 16일
편집: KSSV
2019년 4월 16일
A = {'Time' 'Name' 'Location' 'Duration' 'Remarks'
'100' 'John' 'Abc' '1000' 'Nill'
'101' 'Tim' 'Def' '1000' 'Nill'
'102' 'Tom' 'Ghi' '2000' 'Nill'
'103' 'Jim' 'Jkl' '4500' 'Nill'} ;
T = cell2table(A(2:end,:),'VariableNames',A(1,:)) ;
T.(1) = cell2mat(T.(1)) ;
T.(4) = cell2mat(T.(4)) ;
T
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Type Conversion에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!