Convert a cell column of strings to doubles
Mostra commenti meno recenti
I have a cell column of strings which looks like the attached file. How can I convert the column to double-precision values?
1 Commento
Stephen23
il 15 Lug 2015
Please try attaching your data again. Press then parperclip button, then both the Choose file and Attach file buttons.
Risposta accettata
Più risposte (2)
>> A = {'1.2';'2.3';45.6789';'Inf'};
>> B = str2double(A);
B =
1.2000
2.3000
45.6789
Inf
3 Commenti
The problem is that data is not a cell array of strings, as you think it is, but actually mostly it is a cell array of cells containing strings, except for the last four cells (which are strings):
>> iscellstr(owner)
ans =
0
>> owner(1:5)
ans =
{1x1 cell}
{1x1 cell}
{1x1 cell}
{1x1 cell}
{1x1 cell}
>> owner(end-6:end)
ans =
{1x1 cell}
{1x1 cell}
{1x1 cell}
'0'
'0'
'0'
'0'
You can solve this as follows:
>> idx = cellfun('isclass',owner,'cell');
>> owner(idx) = [owner{idx}];
>> out = str2double(owner);
>> out(1:5)
ans =
1
2
3
4
5
>> out(end-6:end)
ans =
2300
2301
2302
0
0
0
0
This is the data file that I used:
Guillaume
il 15 Lug 2015
str2double(vertcat(owner{:}))
works, because your each cell of your cell array (except for the last four) is actually itself a cell array which in turn contain the string.
The vertcat above convert your cell array of single cell arrays of strings into a cell array of strings.
Categorie
Scopri di più su Data Type Conversion in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!