Azzera filtri
Azzera filtri

How to replace commas with dot

12 visualizzazioni (ultimi 30 giorni)
Algirdas Kluonius
Algirdas Kluonius il 8 Mag 2013
Commentato: Franciszek Aniol il 21 Apr 2020
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 Commenti
Mingyao
Mingyao il 8 Mag 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!
Algirdas Kluonius
Algirdas Kluonius il 9 Mag 2013
First answer is wrong because I have 64 values in a row and I can't write '%s' 64 times and it also does not work.

Accedi per commentare.

Risposte (2)

Andreas Goser
Andreas Goser il 9 Mag 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 Commenti
Thuy Hoang
Thuy Hoang il 19 Mar 2018
OK! dear Supper Man! I thank you so much. :) It's so good! :) Thank you so much again.
Franciszek Aniol
Franciszek Aniol il 21 Apr 2020
It's so good, you are the best :)

Accedi per commentare.


Jason Ross
Jason Ross il 8 Mag 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.
  1 Commento
Algirdas Kluonius
Algirdas Kluonius il 9 Mag 2013
The import wizard gives a string and works partially in any case i need to modify all anyway

Accedi per commentare.

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by