Can I create a vector with a specific pattern in Matlab?

I have this following command:
n=100; ri=1:1:n
I would like to create a new vector according to this pattern: X=[(ri(3)-2*ri(2)+ri(1)),ri(4)-2*ri(3)+ri(2),...,ri(n)-2*ri(n-1)+ri(n-2)].
In words, I would like to create a vector in which its first element is composed by the the third element of ri minus 2*second element of ri plus the first element of ri. The second element would be ri(4)-2*ri(3)+2*ri(2). This pattern would be repeated until ri(n)-2*ri(n-1)+ri(n-2).
Can I create this vector with this specific pattern in Matlab? Sorry If I was not clear in my question.
Thank you very much!

 Accepted Answer

n=100;
ri=1:1:n
v=[ ri(3:n)' ri(2:n-1)' ri(1:n-2)' ]
cr=[1 -2 1]
out=sum(bsxfun(@times,v,cr),2)
Or
n=100;
ri=1:1:n
m=3
v=bsxfun(@minus,ri(m:n)',0:m-1)
cr=[1 -2 1]
out=sum(bsxfun(@times,v,cr),2)

More Answers (0)

Categories

Find more on Aerospace Blockset in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!