How to prevent over-writing in my for loop?
    7 views (last 30 days)
  
       Show older comments
    
My interpolation for loop keeps over-writing the last value, even though I assigned x2=zeros(N,2).
clear; clc;
  Folder = cd;
  N=100;
  x2     = zeros(N, 2);
  for k = 1:N;
    Driftt  = sprintf('Drift%d.out', k);
    Reactt  = sprintf('React%d.out', k);
    matDrift     = importdata(fullfile(Folder, Driftt));
    matReact = importdata(fullfile(Folder, Reactt));
    x1= matDrift(:,2);
    y1= -sum(matReact(:,2:11),2);
  [x3, ix] = unique(x1);
  y3       = y1(ix);
    [y2] = [500000, 5000000, 7000000, 8000000, 900000, 13000000, 14000000];
    x2 = interp1(y3, x3, y2, 'linear')
    end
0 Comments
Accepted Answer
  Matt J
      
      
 on 12 Nov 2017
        
      Edited: Matt J
      
      
 on 12 Nov 2017
  
      Your loop needs to provide an index into x2
x2(something)= interp1(y3, x3, y2, 'linear')
to tell it where to store things.
3 Comments
  Matt J
      
      
 on 12 Nov 2017
				
      Edited: Matt J
      
      
 on 12 Nov 2017
  
			Well, if you don't provide an index, MATLAB assumes that you just want to replace the whole matrix with something else:
      >> x2=zeros(4,2)
    x2 =
         0     0
         0     0
         0     0
         0     0
    >> x2=1
    x2 =
         1
Conversely, if you give an index, you will place the right hand side into some designated part of the array.
    >> x2=zeros(4,2); x2(4,:)=[2,1]
    x2 =
         0     0
         0     0
         0     0
         2     1
So, your job is to specify where in x2 you want the result of interp1(y3, x3, y2, 'linear') inserted.
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements 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!