Using a variable as both output and input and writing a condition in a function

28 visualizzazioni (ultimi 30 giorni)
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?*
  2 Commenti
Adam
Adam il 21 Nov 2017
In general, yes, it is possible to use the same variable as input and output, both in the function definition and in the function call, the two not being the same thing.
However, in your case passing in lamda is redundant anyway since you recalculate it straight away.
F.O
F.O il 21 Nov 2017
that is because i need first to calculate lambda which is a function of I and then i need to use this lambda again in the other calculation maybe i need to function or its possible to have a function inside function?

Accedi per commentare.

Risposta accettata

KL
KL il 21 Nov 2017
Modificato: KL il 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 )
  8 Commenti
KL
KL il 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.
F.O
F.O il 21 Nov 2017
Modificato: F.O il 21 Nov 2017
My intention is what is the best way (using function) to calculate lambda which is function of I and then calculate lambdap,phip but these two need lambda to get calculated

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by