Extract numeric value from a cell in a table.

132 visualizzazioni (ultimi 30 giorni)
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 Commento
Jorge Alberto Fuentes Casillas
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.
>>

Accedi per commentare.

Risposta accettata

Jorge Alberto Fuentes Casillas
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.

Più risposte (1)

José-Luis
José-Luis il 16 Dic 2016
C = strsplit(T{1,1})
your_val = str2num(C{1});
  7 Commenti
Jorge Alberto Fuentes Casillas
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.
Elton Martinez
Elton Martinez il 9 Giu 2023
The following is missing something T{1,1}{1} should work, for future reference

Accedi per commentare.

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by