How do I make this array index into a function of two other array indices?

I have the following arrays: cp, cx, theta, L
cp is a 71x1 array, cx is a 70x1 array, theta is a 70x1 array, L is a 70x1 array
I want to iterate:
for i=1:70
cx(i)=-L/(2)*(cp(i+1)+cp(i))*sin(theta(i));
end
I keep getting this error:
Unable to perform assignment because the left and right sides have a different number of elements.
Error in example (line 40)
cx(i)=-L/(2)*(cp(i+1)+cp(i))*sin(theta(i));
How do I fix this error?

Answers (1)

Perhaps you meant to have this:
for i=1:70
cx(i)=-L(i)/2*(cp(i+1)+cp(i))*sin(theta(i));
end

1 Comment

If so, then BTW the one-line,loop-free way to do this is,
cx=-L.*movmean(cp,2,'End','discard').*sin(theta);

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Asked:

on 18 Sep 2023

Edited:

on 18 Sep 2023

Community Treasure Hunt

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

Start Hunting!