How to replace commas with dot
11 views (last 30 days)
Show older comments
Hello everyone can someone help me, I have german IFM optics sensor and it gives me a file with german formatting. That means comma instead of dot. So if i have a number 0,25 matlab can't understand it correctly, i need to change it from 0,25 to 0.25. I found a link which does not help, because it's faulty http://www.mathworks.com/matlabcentral/answers/51399
it suggests to use data = strrep (a, ',' , '.') but as i use it, yeah i get it 0.25 from 0,25 but if i try to test it and write: >> data>1 ans = 1 1 1 1
if i write data+1 ans = 49 47 51 54
can someone help me on this one, because later csv file has 50 rows like this "0,95084310;0,95006830;0,99675316;0,99362558;1, ...." which is actually a first column of a picture. Thanks in advance
2 Comments
Mingyao
on 8 May 2013
Suppose that you have a .txt file that contains the following data:
0,950843;0,95006830;0,99675316;0,99362558;
1,950843;1,95006830;1,99675316;1,99362558;
The following code converts it into a double array:
fid=fopen('sample.txt');
data=textscan(fid,'%s %s %s %s','Delimiter',';');
fclose(fid);
for i=1:4
for j=1:2
data{i}{j}=str2double(strrep(data{i}{j},',','.'));
end
data{i}=cell2mat(data{i});
end
data=cell2mat(data);
Good luck!
Answers (2)
Andreas Goser
on 9 May 2013
I created this one a million years ago - not sure if it works today:
function comma2dot()
%COMMA2DOT converts comma decimal separator data into dot decimal separator data
% COMMA2DOT() opens an ASCII file finds all comma characters, changes
% them into dot characters and saves the data as a new ASCII file
% V 1.0: Andreas Goser, 7.4.2001
[fname, pname]=uigetfile('*.*', 'ASCII data file with comma decimal separator');
if fname
data=char(textread([pname, fname], '%s', 'delimiter', '\n', 'whitespace', ''));
for k=1:size(data, 1)
f=findstr(data(k, :), ',');
data(k, f)='.';
end
ind=findstr(fname, '.');
fid=fopen([pname, fname(1:ind-1), '_dot', fname(ind:length(fname))], 'w');
for k=1:size(data, 1)-1
fprintf(fid, '%s\r\n', data(k, :));
end
fprintf(fid, '%s', data(size(data, 1), :));
fclose(fid);
disp([pname, fname(1:ind-1), '_dot', fname(ind:length(fname)), ' written']);
end
2 Comments
Thuy Hoang
on 19 Mar 2018
OK! dear Supper Man! I thank you so much. :) It's so good! :) Thank you so much again.
Jason Ross
on 8 May 2013
Have you tried using the Import Data Wizard? One of the options allows you to set the delimiter to be a comma. You can use generate a function or a script once the data looks good that will have the relevant import code in it.
See Also
Categories
Find more on Characters and Strings 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!