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?

Antworten (1)

Matt J
Matt J am 18 Sep. 2023
Bearbeitet: Matt J am 18 Sep. 2023
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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 18 Sep. 2023

Bearbeitet:

am 18 Sep. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by