Change text to numbers in a cell
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mike Mierlo van
le 7 Mai 2020
Commenté : Mike Mierlo van
le 11 Mai 2020
Hi all,
Lets say I have 4 x 2 cell matrix A:
1 'text one' 'text two'
2 '5' 'text two'
3 'text one' 'text two'
4 '10' 'text two'
I want the result of a 4 x 2 cell matrix A of all doubles, exept for the last column. The 'text one' has to be replaced by 1 (double):
1 1 'text two'
2 5 'text two'
3 1 'text two'
4 10 'text two'
When I use a for-loop and if-statement I get the error that matrix dimensions must agree. Below is my faulty code:
for i = 1:size(A,1)
if A{i,2} == 'text one'
A{i,2} == 1
else
A{i,2} == str2double(A{i,2})
end
end
0 commentaires
Réponse acceptée
Akira Agata
le 8 Mai 2020
How about the following?
B = replace(A,'text one','1');
B = cellfun(@str2double,B(:,1:end-1),'UniformOutput',false);
A = [B,A(:,end)];
3 commentaires
Akira Agata
le 8 Mai 2020
Could you upload your original cell arrya A?
I have assumed as follows and my code works agains it.
A = {...
'text one', 'text two';
'5', 'text two';
'text one', 'text two';
'10', 'text two'};
Plus de réponses (1)
madhan ravi
le 7 Mai 2020
Modifié(e) : madhan ravi
le 7 Mai 2020
V = str2double(string(A)); % <2016a
V(isnan(V)) = 1
4 commentaires
madhan ravi
le 8 Mai 2020
Dude when did you edit your question? For sure you edited it after I answered!
Voir également
Catégories
En savoir plus sur Data Type Conversion dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!