How can I plot the coordinates of my data by using for loop
1 次查看(过去 30 天)
显示 更早的评论
prompt='input the module > Module = ';
m=input(prompt);
prompt='input the number of teeth > Teeth Number = ';
T=input(prompt);
prompt='input the pressure angle at pitch radius > Pressure Angle(deg) = ';
pre_ang=input(prompt);
prompt='input the addendum coefficient > a = ';
a=input(prompt);
% Evaluate the "Pitch Radius"
rp = (m*pi)/2;
% Evaluate the "Base Radius"
rb = rp*cos(degtorad(pre_ang));
% Evaluate the "Tip Radius"
rt = rp + a*m;
% Evaluate the "Circular Pitch Tooth Thickness"
cptt = (pi*m)/2;
% Evaluate the "Involute Angle at pitch point (theta)"
theta_pitch = tan(degtorad(pre_ang))- degtorad(pre_ang);
prompt= 'input the slice number on involute curve= ';
n_slice=input(prompt);
deltar = (rt-rb)/n_slice;
figure;
hold on;
for i = 1:n_slice
x = i*deltar;
R(i) = x+rb;
% Evaluate the pressure angle at Ri
theta(i) = acos(rb/R(i));
%Evaluate the involute angle at Ri
inv_ang(i)= tan(theta(i))-theta(i);
% Evaluate the Circular Tooth Thickness at Ri
ctt(i) = (2.*R(i))*((0.5*cptt/rp) + theta_pitch - inv_ang(i));
B = 0.5*ctt(i)/R(i);
%Eventually, Coordinates might be evaluated
X(i) = R(i)* sin(B);
Y(i) = R(i)* cos(B);
plot(X(i),Y(i),'r+')
end
% Is that right? I would use push.back by using C++, I am confused if it is need in here and please tell me how many ways of doing this, and the names. sincerely !
0 个评论
采纳的回答
dpb
2015-11-12
In Matlab, one generally avoids looping...once you've got the two starting positions and the number of points desired, then something like...
R=linspace(rb,rt,n_slice); % vector length N between [rb rt]
% Evaluate the pressure angle at Ri
theta = acos(rb./R);
%Evaluate the involute angle at Ri
inv_ang = tan(theta)-theta;
% Evaluate the Circular Tooth Thickness at Ri
ctt = 2*R.*(0.5*cptt./rp + theta_pitch-inv_ang);
B = 0.5*ctt./R;
%Eventually, Coordinates might be evaluated
X = R.*sin(B);
Y = R.*cos(B);
plot(X,Y,'r+')
I think I did the translation correctly; you'll want to check carefully, of course...
4 个评论
dpb
2015-11-12
You're certainly welcome! Once you've become a little more familiar with and adept w/ Matlab you'll probably find reverting to coding with loops and all very frustrating. My background is Fortran and while it's progressing towards many areas of array syntax and even dynamic allocation on assignment, it's still light years from the ease of Matlab. Of course, for absolute performance, there's generally a cost to be paid still with Matlab, but unless it's an extremely large or complex application, chances are that Matlab will be "fast enough!".
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!