Azzera filtri
Azzera filtri

How can I plot the coordinates of my data by using for loop

1 visualizzazione (ultimi 30 giorni)
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 !

Risposta accettata

dpb
dpb il 12 Nov 2015
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 Commenti
dpb
dpb il 12 Nov 2015
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!".

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Startup and Shutdown in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by