MATLAB function within function handle output

In summary, the conversation discusses the use of the function "rockdynamicstage" within the function handle "sim" in MATLAB. The goal is to output the last element in the 4th row of the matrix generated by "rockdynamicstage" for a range of inputs. Various attempts at solving this problem are discussed, including using a for loop and modifying the function calls. The idea of using the "get()" function to extract elements from a matrix is also mentioned, but it is noted that this may not be the appropriate approach unless the code is designed as an object. It is suggested to clarify with the professor on the required architecture for the code.
  • #1
Carter
12
0

Homework Statement


MATLAB

The funciton "rockdynamicstage" outputs a matrix 4 by x, where x is somthing around 300( varies).

The funciton "rockdynamicstage" is within the funciton handle "sim" with an input of gama0. (PayMass,Masstages,Massfrac,Thstage,IspStage,ChangeTstage) ar parameters that are set earlier in the code.

sim= @(gama0) rockdynamicstage(gama0,PayMass,Masstages,Massfrac,Thstage,IspStage,ChangeTstage);

Homework Equations



I need the "sim" to output the last element in the 4th row of the "rockdynamicstage". So that I get the last element in the 4th row in "rockdynamicstage" for a range of gama0s.

How would I output it.

The Attempt at a Solution


I tried doing
sim= @(gama0) rockdynamicstage(gama0,PayMass,Masstages,Massfrac,Thstage,IspStage,ChangeTstage)(4,end);

similar to when using a regular matrix
 
Physics news on Phys.org
  • #2
x= @(gama0) rockdynamicstage(gama0,PayMass,Masstages,Massfrac,Thstage,IspStage,ChangeTstage);
sim=x(4,end);

Or you can change the rockdynamicstage function
 
  • #3
donpacino said:
x= @(gama0) rockdynamicstage(gama0,PayMass,Masstages,Massfrac,Thstage,IspStage,ChangeTstage);
sim=x(4,end);

Or you can change the rockdynamicstage function
But I need it to be a function handle. I need to be able to plug the function "sim" (that would ideally output the last element in the 4th row for a range of gama0s) into another function that finds the zero point.

So essentially I need the function handle to output a (x,2) array of the gama0s and the 4th row last elements for the rockdynamicstage.
output from the "sim" (or what you have as x) needs to be
[ gama01, rockdynamicstage(4,end); gama02, rockdynamicstage(4,end); gama03, rockdynamicstage(4,end);...so on]
 
  • #4
well if you want to make it very complicated then you need to change rockdynamicstage
 
  • #5
you can use a simple for loop to move between cases, calling sim at each gama value
 
  • #6
This essentially is the outline but myrocketsim is rockdynamicstage. And the bisection method is used to find the zero
upload_2017-12-7_15-6-52.png
 

Attachments

  • upload_2017-12-7_15-6-52.png
    upload_2017-12-7_15-6-52.png
    20.1 KB · Views: 330
  • #7
There is a key difference between the code you presented and the code in step 2
 
  • #8
donpacino said:
There is a key difference between the code you presented and the code in step 2
What would that be?
 
  • #9
Carter said:
What would that be?
Is it the "get()" part
 
  • #10
Yup
 
  • #11
I didn't realize get could extract elements of a matrix
 
  • #12
donpacino said:
I didn't realize get could extract elements of a matrix
that syntax "get()" doesn't work though
 
  • #13
get is designed to work with objects. My guess is you are supposed to define myrocket sim (or equivalent) as an object
 
  • #14
Do you know for sure that your professor requires this architecture. It could be done very easily by using a loop or modifying the function calls.

If not you need to modify the way your myrocketsim works
 

FAQ: MATLAB function within function handle output

What is a function handle in MATLAB?

A function handle in MATLAB is a data type that allows you to store a reference to a function in a variable. This allows you to pass functions as arguments to other functions, or to use them as output values.

How do you create a function handle in MATLAB?

To create a function handle in MATLAB, you can use the "@" symbol followed by the name of the function. For example, the function handle for a function named "multiply" would be "@multiply". You can also use the "func2str" function to create a function handle from an existing function.

What is the output of a function handle in MATLAB?

The output of a function handle in MATLAB is a handle object that contains a reference to the function. This object can be used to call the function or to retrieve information about the function, such as its name or input arguments.

Can you use a function handle as an input argument in another function?

Yes, you can use a function handle as an input argument in another function. This is one of the main uses of function handles in MATLAB, as it allows you to pass functions as arguments to other functions, making your code more flexible and reusable.

How do you call a function using a function handle in MATLAB?

To call a function using a function handle in MATLAB, you can use the "feval" function, which takes the function handle as its first argument and any input arguments as subsequent arguments. Alternatively, you can use the function handle as if it were the actual function name, and provide input arguments as usual.

Similar threads

Replies
10
Views
2K
Replies
1
Views
2K
Replies
13
Views
2K
Replies
10
Views
2K
Replies
12
Views
2K
Replies
1
Views
6K
Replies
4
Views
5K
Back
Top