
Need help performing a Parametric Sweep...keep getting error
    9 views (last 30 days)
  
       Show older comments
    
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)
0 Comments
Accepted Answer
  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
      
      
 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}')
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
