Group maths on for loop
1 次查看(过去 30 天)
显示 更早的评论
I am trying to solve this
omegas=0:1:10;
RR=40:70;
d=90;
for i=1:length(omegas)
for c=1:length(RR)
gg=d+(omegas.*RR);
end
end
for every value of omegas, I want to calculate gg. The idea is that gg should be a 31 by 11 matrix. Means that each omegas is calculated with all values of RR
5 个评论
Guillaume
2019-8-8
this is an easier way of looking at the problem
Not really, it's exactly the same issue. qq is a vector, so you still have a vector that you're trying to store in a scalar.
However, I've understood what you're asking from your description. Sometimes, explaining in words is better than broken code.
回答(2 个)
Guillaume
2019-8-8
编辑:Guillaume
2019-8-8
The vectorised version of what you intended with your loop (but didn't achieve):
R=15;
r=5;
epsilon=100;
delta=(R-r)*(epsilon/100);
Theta = 5:10005; %a ROW vector
omega_b1 = (1:9)'; %a COLUMN vector. The two vectors must be along different dimensions
x_b1 = delta*cos(omega_b1) + r*cos(Theta); %automatic expansion of compatible arrays
y_b1 = delta*sin(omega_b1) - r*sin(Theta);
Vb_x1 = -r*Theta.*sin(Theta) - (R - r)*epsilon*omega_b1.*sin(omega_b1)/100;
Vb_y1 = -r*Theta.*cos(Theta) + (R - r)*epsilon*omega_b1.*cos(omega_b1)/100;
ab_x1 = -r*Theta.^2.*cos(Theta) - (R - r)*epsilon*omega_b1.^2.*cos(omega_b1)/100;
ab_y1 = r*Theta.^2.*sin(Theta) - (R - r)*epsilon*omega_b1.^2.*sin(omega_b1)/100;
I've removed a lot of unnecessary brackets.
For how this works, see compatible array sizes
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!