Add values to the i-th position of a table/double
    5 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    António Gil
 am 11 Aug. 2020
  
    
    
    
    
    Kommentiert: hosein Javan
      
 am 11 Aug. 2020
            Hi everyone,
How can I add a values to a double 'x' inside a for cycle?
I do not mean to replace the i-th value itself but to add one value (xsim1) between i»i+1 and one value (xsim2) between i+1»i+2.
For example:
x=data(:,1).'; %1x203 double
y=data(:,2).'; %1x203 double
for i=1:length(x)-2
...
if angle>100
        xsim1=(x(i)/2)+x(i+1)/2;
        ysim1=(y(i)/2)+y(i+1)/2;
        xsim2=(x(i+1)/2)+x(i+2)/2;
        ysim2=(y(i+1)/2)+y(i+2)/2;
        angle = ... (not relevant);
        if angle>100
            num_sharp_edges=num_sharp_edges+1;
        else
            ADD POINT TO THE DOUBLE IN THE RIGHT POSITIONS
I hope I am specifying what I am trying to do clearly.
Thank you very much in advance.
António
0 Kommentare
Akzeptierte Antwort
  hosein Javan
      
 am 11 Aug. 2020
        if you are trying to insert xsim1 between x(i) and x(i+1) without any data loss, write this code:
x = [x(1:i), xsim, x(i+1:end)]
the value is injected to your vector meaning that if its previous length was "n" now it is "n+1". notice that if you use this in a for loop, the size of your vector changes periodically. in order to avoid that, you have to preallocate the final vector size. if you do this, then it means rather than inserting value you must assign value which is more efficient.
2 Kommentare
  hosein Javan
      
 am 11 Aug. 2020
				you're welcome. the only way is to know the final size. if you don't know the final size, you can estimate it and preallocate a wider space for it and after the loop finishes, cut the remaining unneeded elements. however writing a code has more than one algorithm. think of a better way that does not need this. I think what you're trying to do is to avoid sharp edges in your angle plot by inserting an average of the value before and after it. maybe you think back at how the angle is gained and this time avoid situation like this to happen.
Weitere Antworten (0)
Siehe auch
Kategorien
				Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

