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?

采纳的回答

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 中查找有关 Loops and Conditional Statements 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by