Help with nesting subfunctions?

I have an assignment that requires me to use a nested subfunction to produce a plot, and am not sure how to incorporate it. The exact problem states:
Recall Euler’s formula from analytical calculus: ei·x = cos(x) + i · sin(x), where i is the imaginary unit. A slight rearrangement yields:
cos(x) = ei·x i · sin(x)
Create a nested subfunction that accepts one input argument x (which may be
a vector) and returns the cos function defined as above. Call this function and plot its output from −π ≤ x ≤ π using π/100 increments. Label axes and title it ”Euler Output”.
So far, I have not even been able to do this without a nested subfunction. MATLAB tells me that, "Subscript indices must either be real positive integers or logicals," but the given equation clearly needs to make use of imaginary roots.

3 Kommentare

Robert Cumming
Robert Cumming am 25 Sep. 2012
post some of your code to show us what you have done.
Tyler
Tyler am 25 Sep. 2012
%% Part 1 - Euler
x=-pi:pi/100:pi;
cos(x)=exp(1i.*x)-1i*sin(x);
figure1(x,cos(x));
title('Euler Output')
And that returns with
"Subscript indices must either be real positive integers or logicals."
Tyler
Tyler am 25 Sep. 2012
I know that isn't a nested function at all, but shouldn't that still work just so I can get an idea of which direction to go?

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Wayne King
Wayne King am 25 Sep. 2012
Bearbeitet: Wayne King am 25 Sep. 2012

0 Stimmen

Your problem is here:
cos(x)=exp(1i.*x)-1i*sin(x);
You should spend some time reading the MATLAB Getting Started material, but you just assign the output to a variable.
cosx = exp(1i*x)-1i*sin(x);
Of course you have another problem with figure1( ) unless you have written a function called figure1().

2 Kommentare

Tyler
Tyler am 25 Sep. 2012
How would I go about making that an anonymous function and calling it through the script? Just by making the above:
h=@cosx exp(1i*x)-1i*sin(x);
?
What benefit does that have when writing code?
cosx =@(x) exp(1i*x)-1i*sin(x);
that gives you a function handle.
Then you can do:
x = -pi:0.01:pi;
y = cosx(x);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Performance finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by