How to replace part of string of cell array inside for loop
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Danupon Subanapong
el 16 de Nov. de 2018
Comentada: Danupon Subanapong
el 17 de Nov. de 2018
Hi!! I would like to ask for some help. I am now importing a number of input data. I attacheh some examples of input files. Please refer to them. Some file contains some missing data. I would like to replace the missing data by some value. I have coded as below.
for j=1:5
File_name_i(j,1)=string(sprintf('%s%u%s','File',j,'.txt');
fid(j,1)=fopen(File_name_i(j,1));
f(j,1)=textscan(fid(j,1),'%s', 'delimiter','\n');
fclose(fid(j,1));
Data{j}=regexprep(f{j,1},'**********','0000.00'); %% ********** is one form of missing data and I want to replace these missing data by 0
Data{j}=regexprep(f{j,1},'NaN','0000.00'); %% NaN is another form of missing data and I want to replace these missing data by 0
Data1{j,1}=Data{j}(4:end,:);
end
Later, I will convert this cell array (Data1) to array.
However, the code above doesn't work. I have tried to it regexprep individually (without loop) and it works. So, I think the problem is to use regexprep inside for loop.
Could you please give me some suggestion or solution to this problem?
Thank you in advance
1 comentario
Adam Danz
el 16 de Nov. de 2018
What do mean "it doesn't work"? I tested it on the first file and it works fine. If you're getting an error, share the entire error message and point to which line is causing it. If you're getting unexpected results describe the results you expect to get and how they differ from the results you're getting.
Respuesta aceptada
per isakson
el 16 de Nov. de 2018
Editada: per isakson
el 16 de Nov. de 2018
A slightly different approach
%%
File_name_i = string.empty(5,0);
for j=1:5
File_name_i(j,1)=string(sprintf('%s%u%s','File',j,'.txt'));
str = fileread( File_name_i(j,1) );
%
% ********** is one form of missing data and I want to replace these missing data by 0
% NaN is another form of missing data and I want to replace these missing data by 0
str = strrep( str, '**********', '0.0' );
str = strrep( str, 'NaN', '0.0' );
Data(j,1) = textscan( str,'%f%f%f%f%f', 'Delimiter',' ', 'CollectOutput',true );
end
"regexprep inside for loop" shouldn't be a problem, however, it's a bit of over-kill.
Más respuestas (0)
Ver también
Categorías
Más información sobre Data Type Conversion en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!