2017-06-01 1 views
0

J'ai lu du texte quelques valeurs séparées par des virgules.Comment puis-je obtenir 6 chiffres après une virgule (matlab)?

  • -8.618643,41.141412
  • -8.639847,41.159826
  • ...

J'écris script ci-dessous;

get_in = zeros(lendata,2); 
nums = str2num(line); % auto comma seperation.(two points) 
for x=1:2 
get_in(i,x)=nums(x); 
end 

il arrondit automatiquement les nombres. Par exemple;

(première rangée converti à "-8,6186, 41,1414")

Comment puis-je ignorer le fonctionnement tour?

Je veux obtenir 6 chiffres après la virgule.

J'ai essayé "str2double" après la ligne de séparation avec délimiteur de virgule.

J'ai essayé outil d'importation de données

Mais il a toujours arrondi à 4 chiffres aussi.

+2

Seules les valeurs _displayed_ sont arrondies. Les variables réelles ont une meilleure précision (environ 15 chiffres significatifs). Utilisez 'format long' pour vérifier –

+0

Lisez [ici] (https://stackoverflow.com/a/42483474/5211833) ou [ici] (https://stackoverflow.com/a/32524236/5211833). – Adriaan

Répondre

2

Comme l'a déjà dit l'une des réponses, les valeurs ne sont pas arrondies, seulement les valeurs affichées (pour faciliter la lecture). Comme suggéré, si vous entrez simplement 'format long' dans la fenêtre de commande qui devrait vous aider.

Le lien suivant peut aider à afficher des valeurs individuelles à certains endroits décimaux si: https://uk.mathworks.com/matlabcentral/newsreader/view_thread/118222

Il suggère d'utiliser la fonction sprintf. Par exemple sprintf(%4.6,data) afficherait la valeur de 'données' à 6 décimales.

+0

'format long g' fonctionnera aussi très finement –