필터 지우기
필터 지우기

How to convert 'comma' to 'dot'?

조회 수: 21 (최근 30일)
nancy
nancy 2016년 6월 10일
편집: DGM 2022년 2월 7일
Hi;
I have a txt file. But it includes comma. How can I convert comma to dot? Because with comma I can not obtain the exact graphic..
Thanks a lot.
I attach the txt file.

채택된 답변

Thorsten
Thorsten 2016년 6월 16일
편집: Thorsten 2016년 6월 16일
You can use my function fstrrep to replace each . with a , and then use dlmread to read the data:
fstrrep('test22.txt', ',', '.')
data = dlmread('test22.txt')
The m-file:
function fstrrep(filename, oldsubstr, newsubstr, newfilename)
%FSTRREP Replace string in file.
%
%FSTRREP(FILENAME, OLDSUBSTR, NEWSUBSTR, [NEWFILENAME])read each line in
%FILENAME and replaces the string OLDSUBSTR with NEWSUBSTR and writes the
%new line to NEWFILENAME. If the optional argument NEWFILENAME is not
%given, the contents of the original file is changed.
%
%Example: In file 'test.txt', replace each ',' with a '.'
% fstrrep('test.txt', ',' '.')
%
%Thorsten.Hansen@psychol.uni-giessen.de
%%open file to read from and new file to write to
fid1 = fopen(filename, 'r');
if fid1 == -1
error(['Cannot open file ' filename ' for reading.']);
end
if nargin < 4
newfilename = '_temp.txt';
end
fid2 = fopen(newfilename, 'w');
if fid2 == -1
error(['Cannot open file ' newfilename ' for writing.']);
end
%%read line and write changed line to new file
line = fgets(fid1);
while line ~= -1
newline = strrep(line, oldsubstr, newsubstr);
fprintf(fid2, '%s', newline);
line = fgets(fid1);
end
%%close both files
st = fclose(fid1);
if st == -1
error(['Cannot close ' filename '.'])
end
st = fclose(fid2);
if st == -1
error(['Cannot close ' tempfilename '.'])
end
%%replace old file with new file
if nargin < 4
movefile(newfilename, filename)
end
  댓글 수: 1
nancy
nancy 2016년 6월 16일
Bu I couldn't execute the code again.. Could you please update and rewrite the code that I have attached and send it to me?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2016년 6월 10일
편집: Azzi Abdelmalek 2016년 6월 10일
a=importdata('test2.txt')
b=strrep(a,',','.')
c=cell2mat(cellfun(@str2num,b,'un',0))
  댓글 수: 2
Mohamed Asaad
Mohamed Asaad 2022년 2월 7일
Hi! This works for me. However when i use files including negative value or Nan, it does not work. I get error message " Conversion to double from struct is not possible."
DGM
DGM 2022년 2월 7일
편집: DGM 2022년 2월 7일
The output type of importdata() varies depending on how it manages to split the text based on the specified delimiters. There are probably other ways to do this, but consider this. I've simply renamed the extensions so that they can be uploaded and run here.
A = importdata('Au_1_E_chem_experiment_SPR_angle_offset_after_PEG.txt',' ');
A = strrep(A,',','.'); % convert commas to dots
A = regexp(A,'([^\t]*)','tokens'); % split each line into its elements
B = cellfun(@str2double,vertcat(A{:})); % convert to numeric
B(1:10,:) % show a sample
ans = 10×2
0.1166 -1.2111 0.2069 -1.2121 0.2980 -1.2116 0.3908 -1.2107 0.4812 -1.2110 0.5730 -1.2108 0.6646 -1.2105 0.7555 -1.2099 0.8466 -1.2090 0.9372 -1.2108
Similarly for the other file
A = importdata('Au_1_E_chem_experiment_TIR_angle.txt',' ');
A = strrep(A,',','.'); % convert commas to dots
A = regexp(A,'([^\t]*)','tokens'); % split each line into its elements
B = cellfun(@str2double,vertcat(A{:})); % convert to numeric
B = B(2:end,:); % strip off the header
B(55:64,:) % show a sample
ans = 10×2
5.1407 61.1610 5.2397 61.1607 5.3305 NaN 5.4235 NaN 5.5161 58.1150 5.6089 NaN 5.7000 58.1150 5.7933 NaN 5.8848 NaN 5.9764 NaN

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by