Efficient code - Get rid of my loop
1 回表示 (過去 30 日間)
古いコメントを表示
Hi,
I'm reading in some data from a csv file, which for some reason is being read in as strings rather than doubles. Now I need to do some math so need to convert to numbers, but my strings don't all have the same number of characters. Here's an example:
B = {'5085';'10955';'6496';'6497';'2953';'5090'};
The only way I have found to convert this is to use a loop:
for count = 1:size(B,1)
B{count} = str2num(B{count});
end
B = cell2mat(B);
But there must be a more efficient, quicker, method for achieving this conversion. Any suggestions please?
0 件のコメント
採用された回答
Star Strider
2016 年 8 月 19 日
The cellfun function works without the loop:
B = {'5085';'10955';'6496';'6497';'2953';'5090'};
Bn = cellfun(@str2num, B)
Bn =
5085
10955
6496
6497
2953
5090
3 件のコメント
Star Strider
2016 年 8 月 19 日
My pleasure.
The str2num and other functions don’t work with cell arrays, but cellfun can make most functions compatible with them.
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!