フィルターのクリア

converting cell of strings in arry or cell of numbers

11 ビュー (過去 30 日間)
Syed Zohaib Ali
Syed Zohaib Ali 2011 年 12 月 28 日
コメント済み: Oli Fairfax 2021 年 4 月 1 日
I have a cell of strings 'tsince' having dimension 143 by 1 as '4632' '0.00000000' '-1440.00000000' '-1438.00000000' '-1436.00000000' '-1434.00000000' '-1432.00000000' '-1430.00000000' '-1428.00000000' . . . . '1436.00000000' '1438.00000000' '1440.00000000'
I want to convert it to an array or cell of numbers. I tried with str2num() but it gives the following error:
>> tsince2=str2num(tsince) ??? Error using ==> str2num at 33 Requires string or character array input.
I am new to matlab. somebody can please help out how to do this. Thanks in advance
Zohaib

採用された回答

Jan
Jan 2011 年 12 月 28 日
A surprisingly efficient method even for very large input:
C = {'4632', '0.00000000', '-1440.00000000', '-1438.00000000', ...
'-1436.00000000', '-1434.00000000', '-1432.00000000' '-1430.00000000', ...
'-1428.00000000', '1436.00000000', '1438.00000000', '1440.00000000'};
S = sprintf('%s ', C{:});
D = sscanf(S, '%f');
  5 件のコメント
Josh Philipson
Josh Philipson 2021 年 3 月 30 日
clever. Thanks Jan!
Oli Fairfax
Oli Fairfax 2021 年 4 月 1 日
I had to make my cell array a single column then ensure empties were converted to NaN (otherwise they got lost) but this worked MUCH quicker than str2double for my example, thanks Jan!
C2 = reshape(C,[],1);
C2(cellfun(@isempty,C2)) = {'NaN'};
S = sprintf('%s ', C2{:});
D = sscanf(S, '%f');
Data = reshape(D, [], size(C,2));

サインインしてコメントする。

その他の回答 (3 件)

Nirmal Gunaseelan
Nirmal Gunaseelan 2011 年 12 月 28 日
STR2NUM requires a single string to work on. You need to loop around the individual cell elements and use STR2NUM. CELLFUN is a better way of doing the same - check out the doc.

Matt Tearle
Matt Tearle 2011 年 12 月 28 日
Try str2double(tsince)

Dao Austin
Dao Austin 2015 年 4 月 17 日
you may convert cell to char, then use str2num:
%given A;
C=char(A);
D=str2num(C);

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by