MATLAB: Saving loop entries and plotting T vs r

for loopplotting

I am trying to set up the loop to run the calculation as well as save the output that way i can plot it in a graph.
clc
clear
y=0.5; %magnitude of base motion
zeta=1; %damping ratio
wb=35; %base frequency
k=4220000; %stiffness
for m=[13236 21523 5750000 10000000] %<===input mass%
wn=sqrt(k/m)
r=wb/wn
x=y*sqrt(((1+(2*zeta*r)^2)/(((1-r^2)^2)+((2*zeta*r)^2))))
T=x/y
end

Best Answer

Try this:
y=0.5; %magnitude of base motion
zeta=1; %damping ratio
wb=35; %base frequency
k=4220000; %stiffness
m=[13236 21523 5750000 10000000]; %<===input mass%
for k = 1:numel(m)
wn=sqrt(k/m(k));
r=wb/wn;
x=y*sqrt(((1+(2*zeta*r)^2)/(((1-r^2)^2)+((2*zeta*r)^2))));
T(k)=x/y;
rv(k) = r;
end
figure
plot(rv, T)
grid
xlabel('r')
ylabel('T')
EDIT — Plotting ‘T’ as a function of ’r’, as requested. The ‘r’ values are saved as vector ‘rv’ in order not to disrupt the logic in the loop.
.