Clear Filters
Clear Filters

Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 0-by-1.

33 views (last 30 days)
% Y asymptote of curve
Rd = 2;
% Release point x
XL = -1;
% Starting point x
X0 = 2.5;
% Find A for launch angles 0-45deg
A_values = ones(1,45);
B_values = ones(1,45);
LaunchAngle = ones(1, 45);
for qL = 1:45
LaunchAngle(1,qL) = qL;
qLrad = deg2rad(qL);
Rd = 2; % Y asymptote of curve
XL = -1; % Release point x
X0 = 2.5; % Starting point x
syms A
syms B
F = [(((-2*A*Rd*exp(A*(XL-B)))/((exp(A*(XL-B))+1)^2))-tan(qLrad)== 0), ((-Rd + ((2*Rd) /(1 + exp(A*(X0 - B))))) == 0)];
AB = vpasolve(F, [A, B])
A_values(1,qL) = AB.A;
B_values(1,qL) = AB.B;
end
I understand i'm currently trying to store the incorrect number of elements but I'm new to MATLAB and don't see how I'm doing this.
Offending line is:
A_values(1,qL) = AB.A;

Accepted Answer

Star Strider
Star Strider on 11 Mar 2020
The problem is that vpasolve could not find a solution, so it returned an empty vector. The Symbolic Math Toolbox is good for many things although not for iterative calculations.
Try this instead:
for qL = 1:45
LaunchAngle(1,qL) = qL;
qLrad = deg2rad(qL);
Rd = 2; % Y asymptote of curve
XL = -1; % Release point x
X0 = 2.5; % Starting point x
% syms A
% syms B
F = @(A,B) [(((-2*A*Rd*exp(A*(XL-B)))/((exp(A*(XL-B))+1)^2))-tan(qLrad)), ((-Rd + ((2*Rd) /(1 + exp(A*(X0 - B))))))];
AB0 = [1; 1];
AB = fsolve(@(b)F(b(1),b(2)), AB0)
A_values(:,qL) = AB(1);
B_values(:,qL) = AB(2);
end
Experiment with the initial parameter estimates (‘AB0’) if necessary to get different results.
  6 Comments

Sign in to comment.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!