24 views (last 30 days)

Hei , I have this function

function [lambda, lambdap,phip] = Palaeomagfun(I ,D,lambda,lambdax,phix )

lambda=atand(tand(I)/2) %in degree

lambdap=asind(sind(lambdax)*sind(lambda)+cosd(lambdax)*cosd(lambda)*cosd(D))

if sind(lambda)>=sind(lambdap)*sind(lambdax)

phip=phix+asind(cosd(lambda)*sin(D)/cosd(lambdap))

elseif sind(lambda)<sind(lambdap)*sind(lambdax)

phip=phix+asind(cosd(lambda)*sind(D)/cosd(lambdap))-180

end

and this script

Problem 2:

I=30

lambdax=47

phix=20

D=80

[lambda, lambdap,phip] = Palaeomagfun(I ,D,lambda,lambdax,phix )

*first,Is it possible to use lambda as an output and input at the same time or i need two function or something else?

second: is my if coding correct in the function?*

KL
on 21 Nov 2017

Edited: KL
on 21 Nov 2017

When you write

function [lamda, lambdap,phip] = Palaeomagfun(I ,lamda,lamdax,phix )

lamda=atand(tand(I)/2) %in degree

the input lamda you pass would be overwritten because of your first line inside the function.

How about using two variables, say lamda_in and lamda_out

function [lamda_out, lambdap,phip] = Palaeomagfun(I ,lamda_in,lamdax,phix )

KL
on 21 Nov 2017

Unfortunately it's still not very clear but if you want to calculate lambda based on I, write a function,

function lambda = findLambda(I)

your equation for lambda here

end

and then use this function return directly on your other function call,

[lambda, lambdap,phip] = Palaeomagfun(I ,D,findLambda(I),lambdax,phix )

I still do not understand your intention. But as Adam said, it is possible to have the same variable as input and output. But if reassign the input variable before using it's old value, it doesn't make any sense.

Opportunities for recent engineering grads.

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

Start Hunting!
## 2 Comments

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/368399-using-a-variable-as-both-output-and-input-and-writing-a-condition-in-a-function#comment_507434

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/368399-using-a-variable-as-both-output-and-input-and-writing-a-condition-in-a-function#comment_507434

## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/368399-using-a-variable-as-both-output-and-input-and-writing-a-condition-in-a-function#comment_507447

⋮## Direct link to this comment

https://au.mathworks.com/matlabcentral/answers/368399-using-a-variable-as-both-output-and-input-and-writing-a-condition-in-a-function#comment_507447

Sign in to comment.