Need help performing a Parametric Sweep...keep getting error

6 views (last 30 days)
my code is below. I am trying to vary the constants r and K in the equation for M_spring. Then I want to plot M_spring vs R and M_spring vs K. i keep getting the error that matrix are not same dimensions. can someone assist me?? Thank you
%Input Given Parameters
%Lengths
l1=0.006;
l2=0.02;
l3=0.015;
l4=0.02;
l5=0.015;
wing = 0.033;
l = [l1 l2 l3 l4 l5];
L = .04;
%Masses
m1=0.00025;
m2=0.0005;
m3=0.00025;
m4=0.0025;
mass = [m1 m2 m3 m4];
%Pivots
d1x=0.015;
d1y=0.021;
d2x=-0.015;
d2y=0.021;
d = [d1x d1y d2x d2y];
%Inputs
th1dot=10;
th1=90
r =[0.05:.01:.2];
k = [0:5:500];
A_r = -2*d(1)*l(3) + 2*l(1)*l(3).*cos(th1);
B_r = -2*d(2)*l(3) + 2*l(1)*l(3).*sin(th1);
C_r = d(1)^2+d(2)^2+l(1)^2+l(3)^2-l(2)^2-...
2*l(1).*(d(2).*sin(th1)+d(1).*cos(th1));
th3 = 2*atan2(-B_r-sqrt(B_r.^2-C_r.^2+A_r.^2),C_r-A_r);
M_spring = ((d1x + r*sin(th3))/(d1y +r*cos(th3)))*k*L + m1*l1*cos(th1)*th1dot
plot(r,M_spring)
stay on
plot(k,M_spring)

Accepted Answer

Star Strider
Star Strider on 5 May 2016
The easiest way to do this is to create an anonymous function from ‘M_spring’, create the appropriate matrices from ‘r’ and ‘k’ using the meshgrid function, and then evaluate it, then plot using subplot:
%Input Given Parameters
%Lengths
l1=0.006;
l2=0.02;
l3=0.015;
l4=0.02;
l5=0.015;
wing = 0.033;
l = [l1 l2 l3 l4 l5];
L = .04;
%Masses
m1=0.00025;
m2=0.0005;
m3=0.00025;
m4=0.0025;
mass = [m1 m2 m3 m4];
%Pivots
d1x=0.015;
d1y=0.021;
d2x=-0.015;
d2y=0.021;
d = [d1x d1y d2x d2y];
%Inputs
th1dot=10;
th1=90
r =[0.05:.01:.2];
k = [0:5:500];
[Mr,Mk] = meshgrid(r,k); % Create Matrices Of All Combinations Of (r,k)
A_r = -2*d(1)*l(3) + 2*l(1)*l(3).*cos(th1);
B_r = -2*d(2)*l(3) + 2*l(1)*l(3).*sin(th1);
C_r = d(1)^2+d(2)^2+l(1)^2+l(3)^2-l(2)^2-...
2*l(1).*(d(2).*sin(th1)+d(1).*cos(th1));
th3 = 2*atan2(-B_r-sqrt(B_r.^2-C_r.^2+A_r.^2),C_r-A_r);
M_spring_fcn = @(r,k) ((d1x + r.*sin(th3))./(d1y +r.*cos(th3))).*k.*L + m1.*l1.*cos(th1).*th1dot; % Create Anonymous Function From ‘M_spring’
M_spring = M_spring_fcn(Mr,Mk); % Calculate ‘M_spring’
figure(1)
subplot(2,1,1)
plot(r,M_spring)
xlabel('r')
ylabel('M_{spring}')
grid
subplot(2,1,2)
plot(k,M_spring)
xlabel('k')
ylabel('M_{spring}')
grid
The plot:
The upper plot gives a family of curves for various values of ‘k’ as a function of ‘r’, and the lower plot gives a family of curves for various values of ‘r’ as a function of ‘k’.
You probably could benefit by fewer ‘r’ values. A legend for each plot would also help. I have no idea what you’re doing, so I’ll let you sort these.
And May the Fourth be with you!
  2 Comments
Star Strider
Star Strider on 5 May 2016
My pleasure!
Also consider a surf or mesh plot:
figure(2)
meshc(Mr, Mk, M_spring)
grid on
xlabel('r')
ylabel('k')
zlabel('M_{spring}')

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!