Fortran to Matlab converting the "where" statement
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I would like to know how is possible to convert the particular statement from fortran to matlab
where (abs(A-B)>e)
no_converge=1
elsewhere
no_converge=0
end where
A and B are arrays of some particular dimensions, and e is a scalar. I have to say that I am not that familiar with either programming languages. However, what I understood from some sources the particular statement takes the element per element difference of those arrays and evaluates whether the difference is higher or lower from a particular scalar, e. For this example, assume that it is very small, e.g e=0.0001.
I have used the f2matlab but it does very poor job on this fortran statement. In case it helps this is a code from F90.
I am wondering whether the quivalent for a matlab is something like this:
if abs(A-B)>e
no_converge=1 ;
else
no_converge=0 ;
end
However, I am not sure whether this is quite general or not. In other words, i am not sure for whatever the condition is or the A's and B's a simple "if" statement does the trick.
I will really appreciate any suggestions here. In case that it helps, this part of the code, is very crucial since it checks whether a whole distribution converges to a particular distribution that is needed.
Many thanks
0 commentaires
Réponse acceptée
James Tursa
le 10 Juin 2014
Modifié(e) : James Tursa
le 11 Juin 2014
no_converge= zeros(size(A));
no_converge( abs(A-B) > e ) = 1;
or
no_converge= double( abs(A-B) > e );
or if you can use no_converge as a logical instead of a double:
no_converge= abs(A-B) > e;
6 commentaires
James Tursa
le 11 Juin 2014
Modifié(e) : James Tursa
le 11 Juin 2014
@Safis: What you have written makes absolutely no sense to me at all. The WHERE construct is specifically set up to do element-by-element assignments to arrays controlled by the logical array mask. The variable being assigned to, no_converge, only makes sense in this context if it is an array. Can you double check your code? In addition to the INTEGER statement, is no_converge also part of a separate DIMENSION statement?
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Fortran with MATLAB dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!