How to replace commas with dot
    9 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 Creating, Deleting, and Querying Graphics Objects 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!




