How to replace part of string of cell array inside for loop
    2 views (last 30 days)
  
       Show older comments
    
    Danupon Subanapong
 on 16 Nov 2018
  
    
    
    
    
    Commented: Danupon Subanapong
 on 17 Nov 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 Comment
  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. 
Accepted Answer
  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)
See Also
Categories
				Find more on String Parsing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

