Efficient code - Get rid of my loop

2 次查看(过去 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?

采纳的回答

Star Strider
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
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.
Azzi Abdelmalek
Azzi Abdelmalek 2016-8-19
The cellfun is not more efficient then the for loop

请先登录,再进行评论。

更多回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2016-8-19

类别

Help CenterFile Exchange 中查找有关 Data Type Identification 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by