Extract numeric value from a cell in a table.

Hello to all!
I want to extract the numeric values of a mixed data that I have in a cell of an array. This is what I have done:
T = readtable('file.dat','Format','%s'); %Which creates a table with 1 column and 525606 rows.
latitude = T{1,1} %which creates an array with the next output:
latitude =
'12.967 [deg N]'
only one char value.
What I want to do now is to get only the numerical value from that array, I've tried char2string and sscanf but it only prompts errors and no conversion. Please help :) I know that it seems to be a simple procedure but I'm stuck here.
Thanks in advance!

1 Comment

Hello. Thanks for the reply. Apparently that code prompts this error:
>> latitude = T{1,1}
latitude =
'12.967 [deg N]'
>> C = strsplit(T{1,1}) Error using strsplit (line 76) First input must be a string.
>>

Sign in to comment.

 Accepted Answer

Thanks for your support. This is another way to solve it and that I used in the version 2014b:
coordinates = readtable('Bangalore-20161215_min.dat','Format','%s');
%% We split in this part the tables' content that we need (latitude, longitude, time, etc).
expression = ' '; %Helps to divide the cell everytime we find a space. splitStr_lat = regexp(coordinates{1,1},expression,'split'); %we split the string in one row with 3 columns or cells. Every time that the code finds a ' ' (space) character, it will split the character and put it in one cell.
num_lat = splitStr_lat{1,1};%variable that has the numerical value of latitude. latitude = cell2mat(num_lat(1,1)); %Convert from cell to numerical value.
%% We do the same for longitude. splitStr_long = regexp(coordinates{2,1},expression,'split'); %now we get the longitude in the row 2 column 1. num_long = splitStr_long{1,1}; longitude = cell2mat(num_long(1,1));
I will try with your code, Star Strider.
Thanks.

More Answers (1)

C = strsplit(T{1,1})
your_val = str2num(C{1});

7 Comments

Try replacing
T{1,1}
by
[T{:}]
No. It says this (I added another option that I tried)
>> C = strsplit(T{:}) You can not subscript a table using only one subscript. Table subscripting requires both row and variable subscripts.
>> C = strsplit(T{1:1,1:1}) Error using strsplit (line 76) First input must be a string.
You'll have to show what you actually have in T
This is what I have in T:
And what I want to do, is to get only the numerical values of the first 4 rows (12.967, 77.583, etc) individually.
And what does T{1} return?
The same error:
C = strsplit(T{1}) You can not subscript a table using only one subscript. Table subscripting requires both row and variable subscripts.
The following is missing something T{1,1}{1} should work, for future reference

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!