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?

回答(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 个评论

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

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

标签

提问:

2023-9-18

编辑:

2023-9-18

Community Treasure Hunt

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

Start Hunting!

Translated by