Effacer les filtres
Effacer les filtres

Efficient code - Get rid of my loop

2 vues (au cours des 30 derniers jours)
jlt199
jlt199 le 19 Août 2016
Commenté : Azzi Abdelmalek le 19 Août 2016
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?

Réponse acceptée

Star Strider
Star Strider le 19 Août 2016
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 commentaires
Star Strider
Star Strider le 19 Août 2016
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 le 19 Août 2016
The cellfun is not more efficient then the for loop

Connectez-vous pour commenter.

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 19 Août 2016
  1 commentaire
jlt199
jlt199 le 19 Août 2016
Thank you, that works too :D

Connectez-vous pour commenter.

Catégories

En savoir plus sur Data Type Identification dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by