Matlab 2014a parachute problem

5 views (last 30 days)
Robert
Robert on 31 Aug 2014
Commented: Robert on 2 Sep 2014
Here is the code
function dummy=parachute(c)
m=68;
g=9.81;
t=10;
v=45;
c=0.1:20:100;
dummy=-v+(g*m./c).*(1-exp(-c/m)*t);
fplot('parachut',[0,20])
grid on
xlabel('c')
ylabel('f(c)')
here is the error message I am receiving
Maximum recursion limit of 500 reached. Use
set(0,'RecursionLimit',N) to change the limit. Be
aware that exceeding your available stack space can
crash MATLAB and/or your computer.
Error in ismember>ismemberlegacy
I want the program to run . then I have to make a function to find "c" at 10 seconds by graphic means in the command window.
I am stuck with this error messages or another messages.
  2 Comments
Image Analyst
Image Analyst on 31 Aug 2014
Edited: Image Analyst on 31 Aug 2014
I fixed your formatting. Next time don't double space and just highlight your code and click the {}Code button. Please read this: http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup
By the way, your code ran fine for me.
Robert
Robert on 31 Aug 2014
Edited: Robert on 31 Aug 2014
Thank you for fixing it. I ran it on my desktop and it worked. But on my surface pro 2 it keeps giving my revulsion limit reached. I change the limit and it crashed. Any suggestion?

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 31 Aug 2014
Put this command into your script:
workspace;
And then set a breakpoint near the end of your function. Make sure there are no variables that are not supposed to be there, like two variables, one of which is a misspelling of another. Try
which fplot
to make sure you don't have two functions of that name, where it might be using the one you did not expect.
When you ran it on each computer, was it the actual file, like you copied it from a flash drive or network drive? Or did you type it in on each one? Because the code looks fine, and there is no recursion that I can see and the code runs fine on at least two computers.
  9 Comments
Image Analyst
Image Analyst on 1 Sep 2014
I thought he purposely called it parachut to avoid the name conflict. that's the way his code reads. If he didn't and called it parachute in fplot, then that would cause a problem. I have no idea what that dummy stuff is, but I think the program should go like this. In file parachute.m, have both functions below:
function parachute()
fontSize = 24;
c = linspace(1, 30, 100); % $00 points between 1 and 1000
out = GetCurve(c);
fHandle = figure;
subplot(1,2,1);
plot(c, out, 'bo-', 'LineWidth', 2);
xlabel('c', 'FontSize', fontSize);
ylabel('out', 'FontSize', fontSize);
grid on;
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
uiwait(msgbox('Click somewhere on the curve'));
[cSelected, y] = ginput(1)
% Find distances from clicked point to every other point on the curve.
distances = sqrt((cSelected - c).^2 + (y - out).^2);
subplot(1,2,2);
plot(distances, 'bo-');
grid on;
% Find c nearest cSelected
[difference, indexOfClosest] = min(distances)
closestY = out(indexOfClosest);
xlabel('index', 'FontSize', fontSize);
ylabel('distance', 'FontSize', fontSize);
% Draw a line between them
subplot(1,2,1);
line([cSelected, c(indexOfClosest)], [y, closestY],...
'Color', 'r', 'LineWidth', 2);
message = sprintf('You clicked at (%.1f,%.1f) which is closest to (%.1f,%.3f)',...
cSelected, y, c(indexOfClosest), closestY);
uiwait(msgbox(message));
% Close down the figure window.
close(fHandle);
function out = GetCurve(c)
m=68;
g=9.81;
t=10;
v=45;
out = -v+(g*m./c).*(1-exp(-c/m)*t);
%
Robert
Robert on 2 Sep 2014
That is very nice. I am going to have to work on condensing your program down to a more feasible level for myself. I see how your program is more user friendly and would work more realistic. I like the message boxes. The enlarge to full screen is the most fascinating thing I have saw.

Sign in to comment.

More Answers (1)

Robert
Robert on 1 Sep 2014
I think I have made some strides in the last 24 hours. I ran fplot outside of parachute and also put in ginput(1) which gave me the value of "c" in the workspace.
How could I could I make some function to obtain the value of "c" to appear on the command window?
  2 Comments
Image Analyst
Image Analyst on 1 Sep 2014
fprintf('The value of c = %f', c);
Robert
Robert on 1 Sep 2014
Thank you. I am happy with the results. I think I am going to need a lot of practice to be proficient with MATLAB.

Sign in to comment.

Categories

Find more on 2-D and 3-D 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!