How to prevent over-writing in my for loop?
    8 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Ismail Qeshta
 il 12 Nov 2017
  
    
    
    
    
    Commentato: Ismail Qeshta
 il 12 Nov 2017
            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 Commenti
Risposta accettata
  Matt J
      
      
 il 12 Nov 2017
        
      Modificato: Matt J
      
      
 il 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 Commenti
  Matt J
      
      
 il 12 Nov 2017
				
      Modificato: Matt J
      
      
 il 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.
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

