replace comma with dot in large array
51 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
JB
el 18 de Ag. de 2017
Comentada: Image Analyst
el 18 de Ag. de 2017
Please help, I'm new to matlab coding. I have a array like this
data={'250,1000' '-6,52796' '322,683' '1,50367'
'250,0500' '-6,54959' '322,695' '1,50379'
'250,0000' '-6,63267' '322,711' '1,50395'}
except that it is very large (4500 lines). I want to replace all the commas with dots and convert to a data matrix. So far I have this:
data = strrep(data, ',', '.');%replace ´,´ with ´.´
data=cellfun(@str2num,data);
which can do the trick but it is very slow. Any suggestions to speed up the process?
0 comentarios
Respuesta aceptada
Guillaume
el 18 de Ag. de 2017
Well, the slow bit is probably your cellfun(@str2num). Replacing that by:
data = str2double(data);
would probably be faster. The strrep step is already as fast as it can be in matlab.
If you want faster, you need to modify your import process but if I recall correctly matlab is not very good as coping with ',' decimal separator.
Más respuestas (1)
Image Analyst
el 18 de Ag. de 2017
4500 is not very big. I ran this code
% Create sample data
n = 4500
data = cell(1, n);
for k = 1 : n
data{k} = '123,456';
end
% Now do the replacement.
tic;
data = strrep(data, ',', '.'); % Replace ´,´ with ´.´
toc;
% celldisp(data);
fprintf('Done!\n');
and got this:
Elapsed time is 0.002293 seconds.
Two milliseconds seems fast to me. Exactly how fast do you need it?
2 comentarios
Image Analyst
el 18 de Ag. de 2017
"data matrix" is so ambiguous that we don't know what it is. ANY kind of matrix in MATLAB could be considered a data matrix, from a character matrix to a cell array to a table to a regular double matrix. Your "data" is a cell array and so is, in fact, already a data matrix. If you want a vector of doubles, you can do
d = str2double(data);
as Guillaume first showed. Did you ever figure out why yours took so long while my running of your code took only 2 ms?
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!