2011-02-02 3 views
6

J'ai des variables qui sont de double type Je veux qu'elles soient float. Existe-t-il un moyen de forcer une variable à être float et de ne pas doubler, aussi, existe-t-il un moyen de le faire de façon globale pour toutes les fonctions et sous-fonctions avec quelques lignes au début de la fonction principale? J'ai beaucoup de fonctions et ils utilisent beaucoup de variables temporaires et créent des variables qu'ils retournent. Passer en revue toutes mes fonctions et les changer sera très difficile.Forçage de type variable dans MATLAB

Mon rationnel pour cette demande:

J'écris le programme Matlab afin de simuler un algorithme que je vais dans le matériel ensuite à la mise, je veux vous assurer que l'utilisation de 32 bits comme la taille de mes signaux ne provoquera pas d'erreurs de calcul.

+2

Hmmm ... "le moulage de type" est possible dans Matlab. Voir http://www.mathworks.com/help/techdoc/ref/typecast.html. Je ne suis pas sûr de l'appliquer globalement, mais ce genre de sonne comme ça pourrait aider http://www.mathworks.com/help/techdoc/matlab_oop/br2vkky.html. Aussi http://www.mathworks.com/help/techdoc/matlab_oop/brglmxp.html –

Répondre

6

En utilisant B=single(A) comme suggéré par @cbz ou définissant des tableaux comme SINGLE, par exemple en appelant B=zeros(3,3,'single') crée « flotte » dans Matlab.

Il n'existe aucun moyen de transformer globalement Matlab en un environnement «flottant». Bien que la plupart des fonctions de niveau inférieur soient également implémentées pour single (à quelques exceptions près, par exemple celles mentionnées dans l'aide de DOUBLE), de nombreuses fonctions intégrées de haut niveau ne fonctionneront qu'avec double. En d'autres termes, vous devrez définir manuellement vos variables comme single, vous devrez vérifier périodiquement que les variables n'ont pas été tranquillement converties en double, et à la fin, votre code pourrait ne pas fonctionner si il a besoin d'une fonction qui n'est pas encore implémentée pour single.

4

L'équivalent MATLAB de 'float' est 'single'. Vous pouvez convertir en utilisant

B = single(A). 

Cela étant dit, votre hypothèse selon laquelle cela équivaut à 32 bits pourrait devoir être réexaminée. Ce n'est pas aussi simple que ça.

Questions connexes