redefine array in for loop

Asked by Sara on 5 Jul 2012
Latest activity Commented on by F. on 11 Jul 2012

Hi Guys,

   for n = 3:length(x)
      y1 = x(2:n) ;
      t1 = ((n-2):-1:0)*dt ;
     % y2 = x(1:n-1) ;
      y2 = y1 - 1 ;
      t2 = t1 +dt; 
      int(n) = sum (t1.^(k-1)/factorial(k-1).*y1 + t2.^(k-1)/factorial(k-1).*y2)*dt/2 ;
end

I want to define y2= y1 -1 instead y2= x (1:n-1) which I have commented above. By y2 = y1 - 1, occurred some errors in MATLAB. Why? It is not correct?

1 Comment

Walter Roberson on 6 Jul 2012

What error did you encounter with the code you tried?

Sara

Products

No products are associated with this question.

1 Answer

Answer by John Petersen on 5 Jul 2012

y1-1 means the vector y1 with the quantity 1 subtracted from it. The commented code shifts the elements by one element. Which do you want to do?

5 Comments

John Petersen on 5 Jul 2012

I think you want to shift the elements by 1, but you want to define it your own way. If you want to use Matlab, you need to use it's syntax.

Sara on 11 Jul 2012
int = zeros(1,length(x));
if k <= 0
    int = x ;
    return
end
for n = 3:length(x)
      y1 = x(2:n) ;
      t1 = ((n-2):-1:0)*dt ;
     y2 = x(1:n-1) ;
     % y2 = -1 +y1 ;
      t2 = t1 +dt; 
      int(n) = sum (t1.^(k-1)/factorial(k-1).*y1 + t2.^(k-1)/factorial(k-1).*y2)*dt/2 ;
end

I mean, is there anyway to define y2 from y1? And not from variable x? Could I omit the variable y2 from the code ?

F. on 11 Jul 2012

If you don't use y1 and y2 after...

   if k <= 0
     int = x ;
     return
   else
     int = zeros(1,numel(x));
   end
   for n = 3:numel(x)
      t1 = ((n-2):-1:0)*dt ;
      t2 = t1 +dt; 
      int(n) = sum ( ...
         t1.^(k-1)/factorial(k-1) .* x( 2 : n   ) + ...
         t2.^(k-1)/factorial(k-1) .* x( 1 : n-1 ) ...
         )*dt/2 ;
   end
John Petersen

Contact us