replace comma with dot in large array
Show older comments
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?
Accepted Answer
More Answers (1)
Image Analyst
on 18 Aug 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 Comments
Image Analyst
on 18 Aug 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?
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!