How to replace part of string of cell array inside for loop

3 views (last 30 days)
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 Comment
Adam Danz
Adam Danz on 16 Nov 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.

Sign in to comment.

Accepted Answer

per isakson
per isakson on 16 Nov 2018
Edited: per isakson on 16 Nov 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.

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!