How to replace commas with dot
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
Mingyao
2013-5-8
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!
回答(2 个)
Andreas Goser
2013-5-9
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 个评论
Thuy Hoang
2018-3-19
OK! dear Supper Man! I thank you so much. :) It's so good! :) Thank you so much again.
Jason Ross
2013-5-8
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!