# Operation with components of a vector and for loop

1 view (last 30 days)
Vittorio Locatelli on 3 May 2022
Commented: Monica Roberts on 3 May 2022
Good morning everyone,
given a vector of n components, I would need to perform the following operation: dist = n- (n-1) for all n.
Since the size of the vector is an unknown I interrogated the software to derive this and then I thought of building a for loop as described below. I think I understand the problem, I think that in the first matlab cycle I can't identify the second component to subtract and does not identify the component "n-1 = 0" but I can't think of anything alternative.
[nlocsrif,ncol]=size(locsrif)
for i = 1:nlocsrif
picco = sprintf("locsrif(%d)", i)
distpic= picco(i)-picco(i-1)
end
Greetings
##### 2 CommentsShowHide 1 older comment
Vittorio Locatelli on 3 May 2022
Thanks a lot to you too.

Monica Roberts on 3 May 2022
You might consider checking out the built-in matlab function "diff". Or you could loop from 2 to nlocsrif instead.
##### 2 CommentsShowHide 1 older comment
Monica Roberts on 3 May 2022
You might notice that Y is a different size to X. This is because it subtracts the elements of X starting at X(2) - X(1). Let's say your data looks like:
X = [2,3,7,8,3,1];
Then Y = 1, 4, 1, -5, -2. X is of size 6, Y is of size 5. To get this we started by subtracting X(2) - X(1) or 3 - 2.
Should the first value of Y be X(1) - 0 instead? If so, you could do this:
X0 = [0,X];
Y = diff(X0);