Operation with components of a vector and for loop

조회 수: 1 (최근 30일)
Vittorio Locatelli
Vittorio Locatelli 2022년 5월 3일
댓글: Monica Roberts 2022년 5월 3일
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
I trust in your solution and thank you in advance for the answers
Greetings

채택된 답변

Monica Roberts
Monica Roberts 2022년 5월 3일
You might consider checking out the built-in matlab function "diff". Or you could loop from 2 to nlocsrif instead.
  댓글 수: 2
Vittorio Locatelli
Vittorio Locatelli 2022년 5월 3일
Thanks for the quick reply. Y = diff (X) seems to work for me. It is not possible for me to start from element 2 since by doing so I would not be able to calculate component2-component1.
Monica Roberts
Monica Roberts 2022년 5월 3일
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);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by