Convert a cell column of strings to doubles
6 ビュー (過去 30 日間)
古いコメントを表示
I have a cell column of strings which looks like the attached file. How can I convert the column to double-precision values?
1 件のコメント
Stephen23
2015 年 7 月 15 日
Please try attaching your data again. Press then parperclip button, then both the Choose file and Attach file buttons.
採用された回答
Star Strider
2015 年 7 月 15 日
See if this does what you want:
D = load('string_column.mat');
data = D.owner;
out = cellfun(@(x) str2num(char(x)), data);
2 件のコメント
その他の回答 (2 件)
Stephen23
2015 年 7 月 15 日
編集済み: Stephen23
2015 年 7 月 15 日
>> A = {'1.2';'2.3';45.6789';'Inf'};
>> B = str2double(A);
B =
1.2000
2.3000
45.6789
Inf
3 件のコメント
Stephen23
2015 年 7 月 15 日
編集済み: Stephen23
2015 年 7 月 15 日
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
2015 年 7 月 15 日
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.
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!