IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Changer le format d'un grand nombre de données


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut Changer le format d'un grand nombre de données
    Bonjour,

    Pour mon projet je dois convertir un fichier *.mat en *.asc tout en le rendant compatible avec le logiciel qui devra l'utiliser (cf.post : organiser un fichier ASCII).

    La conversion fonctionne correctement mais je me retrouver avec des données de ce type : 1.0000200e-003 et je voudrais passer à : 0.001 ou au moins supprimer le e-003.

    J'ai essayé de changer le format dans les préférences sans résultats.
    J'ai aussi essayé d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    N = sprintf(format,M);
    Et j'ai eu ce message d'erreur :

    ??? Error using ==> format
    Too many output arguments.

    Error in ==> traitement_tk_dt at 130
    N = sprintf(format,M);

    Ci-dessous le programme en entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    clear all;
    load('test_1.mat');                                 %charger le fichier
    D = test_1;
     
    tk_max = ((2e30)-1)*2e-6 ;
    %Time  = test_.X.Data;       %Isoler les données  
    tk_FL = D.Y(1,5).Data;  %qui nous interesse
    tk_FR = D.Y(1,6).Data;  % du fichier
    tk_RL = D.Y(1,7).Data;
    tk_RR = D.Y(1,8).Data;           %charger les valeurs d'un enregistrement
     
     
    % calcul des largeurs des impulsions
    %Conversion FL
    j1=0;
    deltak_FL=zeros(size(tk_FL));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_FL=zeros(size(tk_FL));
     
    for i1=1:size(tk_FL,2)-1            
        if (tk_FL(i1)~=tk_FL(i1+1)) % test passage de dent
            j1=j1+1;
            if (tk_FL(i1+1)-tk_FL(i1))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_FL(j1)=(tk_FL(i1+1)-tk_FL(i1))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_FL(j1)=D.X.Data(i1);
            else
                deltak_FL(j1)= tk_max - tk_FL(i1)+tk_FL(i1+1);
                t_deltak_FL(j1)=D.X.Data(i1);
            end
        end  
    end
     
    delta_ind_FL=find(deltak_FL~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_FL=find(t_deltak_FL~=0);  % idem mais pour t_deltak_FL
     
    figure
    plot(t_deltak_FL(delta_ind_FL),deltak_FL(delta_ind_FL));
    xlabel('Time (s)')
    ylabel('indice')
    grid on
    title ('valeurs delta t_k');
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion FR
    j2=0;
    deltak_FR=zeros(size(tk_FR));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_FR=zeros(size(tk_FR));
     
    for i2=1:size(tk_FR,2)-1            
        if (tk_FR(i2)~=tk_FR(i2+1)) % test passage de dent
            j2=j2+1;
            if (tk_FR(i2+1)-tk_FR(i2))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_FR(j2)=(tk_FR(i2+1)-tk_FR(i2))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_FR(j2)=D.X.Data(i2);
            else
                deltak_FR(j2)= tk_max - tk_FR(i2)+tk_FR(i2+1);
                t_deltak_FR(j2)=D.X.Data(i2);
            end
        end  
    end
     
    delta_ind_FR=find(deltak_FR~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_FR=find(t_deltak_FR~=0);  % idem mais pour t_deltak_FL
     
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion RL
    j3=0;
    deltak_RL=zeros(size(tk_RL));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_RL=zeros(size(tk_RL));
     
    for i3=1:size(tk_RL,2)-1            
        if (tk_RL(i3)~=tk_RL(i3+1)) % test passage de dent
            j3=j3+1;
            if (tk_RL(i3+1)-tk_RL(i3))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_RL(j3)=(tk_RL(i3+1)-tk_RL(i3))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_RL(j3)=D.X.Data(i3);
            else
                deltak_RL(j3)= tk_max - tk_RL(i3)+tk_RL(i3+1);
                t_deltak_RL(j3)=D.X.Data(i3);
            end
        end  
    end
     
    delta_ind_RL=find(deltak_RL~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_RL=find(t_deltak_RL~=0);  % idem mais pour t_deltak_FL
     
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion RR
    j4=0;
    deltak_RR=zeros(size(tk_RR));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_RR=zeros(size(tk_RR));
     
    for i4=1:size(tk_RR,2)-1            
        if (tk_RR(i4)~=tk_RR(i4+1)) % test passage de dent
            j4=j4+1;
            if (tk_RR(i4+1)-tk_RR(i4))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_RR(j4)=(tk_RR(i4+1)-tk_RR(i4))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_RR(j4)=D.X.Data(i4);
            else
                deltak_RR(j4)= tk_max - tk_RR(i4)+tk_RR(i4+1);
                t_deltak_RR(j4)=D.X.Data(i4);
            end
        end  
    end
     
    delta_ind_RR=find(deltak_RR~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_RR=find(t_deltak_RR~=0);  % idem mais pour t_deltak_FL
     
    % reconstitution de la vitesse
    v = (48/(2*pi))./deltak_FL(delta_ind_FL);  %en rad/s
    v=v*2;
     
     
    figure
    plot(t_deltak_FL(delta_ind_FL), v,'r',D.X.Data, D.Y(2).Data);
    legend('Vitesse calculee','vitesse mesuree par ABS')
    xlabel('Time (s)')
    ylabel('Speed (rad/s)')
    grid on
    title ('Vitesse calculée');
     
     
    M = nan(max([numel(t_deltak_FL) numel(t_deltak_FR) numel(t_deltak_RL) numel(t_deltak_RR)]),4);
    M(1:numel(t_deltak_FL),1) = t_deltak_FL( : );
    M(1:numel(t_deltak_FR),2) = t_deltak_FR( : );
    M(1:numel(t_deltak_RL),3) = t_deltak_RL( : );
    M(1:numel(t_deltak_RR),4) = t_deltak_RR( : );
     
    N = sprintf(format,M);
     
    save('delta3.asc','M','-ascii');
     
    % fid = fopen('test.asc','wt');
    % fprintf(fid,'%f %f %f %f\n', [tk_FL(:) tk_FR(:) tk_RL(:) tk_RR(:)].');
    % fclose(fid); 
    % 
    %whos t_deltak_FL t_deltak_FR t_deltak_RL t_deltak_RR
    %Convertir les données choisies en extension ascii et les rassembler dans
    %le fichier TK.asc

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu n'as pas défini ta "variable" format.
    Et format étant aussi une fonction MATLAB qui ne renvoie pas de valeur, tu obtiens cette erreur.
    Je te suggère de lire ceci, de renommer ta variable et la définir

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    ça veut dire je dois faire quelque chose comme ça :

    which format -all
    Désolé je n'avais jamais utilisé Matlab avant ce projet, alors je découvre en même temps.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans MATLAB, il est possible de nommer des variables du même nom que des fonctions MATLAB. Cependant pour des raisons évidentes de lisibilité de code, ainsi que le fait que la fonction est inutilisable par la suite (menant parfois à des erreurs incompréhensibles), cette pratique est à éviter.
    Donc lorsqu'on souhaite nommer une variable, on peut effectuer la vérification qu'une fonction MATLAB de ce même nom n'existe pas déjà :
    Si cette ligne renvoie un 'variable' not found, tu peux utiliser ce nom (modulo l'installation de toolboxes).

    Ainsi en faisant
    tu te serais rendu compte qu'une fonction MATLAB de ce nom existait déjà. Tu aurais donc choisi un autre nom, et enfin l'aurais défini autreNomQue_format = ... (ce qui était à l'origine de ton erreur).

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    Mais je veux utiliser la fonction format telle qu'elle existe.
    Si j'ai bien compris elle va me permettre d'obtenir le format de donnée que je souhaite, non ?

    Ou alors est-ce qu'il y a une autre manière de changer 1.0000200e-003 en 0.001 ou au moins supprimer le e-003.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Non, elle ne sert qu'à formater l'affichage des valeurs dans la Command Window.
    Si tu souhaites formater l'affichage dans un fichier, utilise la fonction fprintf avec fopen/fclose.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    Quelque chose comme ça alors ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid = fopen('delta3.asc');
    fprintf(fid,M);
    fclose(fid);

  8. #8
    Invité
    Invité(e)
    Par défaut
    Pense à consulter la documentation de la fonction fprintf en profondeur.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    Dans l'aide de MATLAB il y a ça d'inscrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fid = fopen('exp.txt','w');
    fprintf(fid,'%6.2f  %12.8f\n',y);
    fclose(fid);
    Je ne comprends pas comment ça marche, la première ligne sert à ouvrir le document mais le 'w' je ne vois pas ce que c'est.
    sur la seconde ligne on utilise le fid ok mais comment on détermine le chiffre associé ?

  10. #10
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    w dit que tu souhaites ouvrir le fichier en écriture (write) -> tu ne pourras pas le lire. C'est ce qui est décrit dans la doc sous le paragraphe permission.
    %6.2f décrit le format d'écriture. L'explication est dans la doc de fprintf dans la partie formatspec
    y contient les données que tu souhaites écrire.

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    Ok, donc si je comprend bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     fid = fopen('delta3.asc','r');
    le 'r' signifie "read" en gros il va lire les données de delta3

    et là les données contenues dans fid vont être écrites en décimal.

    Par contre je n'arrive pas à trouver ce qui peut modifier les données comme je le voudrais.

  12. #12
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    regarde ce que fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sprintf('%f',1.02e-3)
    sprintf('%e',1.02e-3)
    Et regarde bien la partie "formatSpec" de la doc fprintf, tu y trouveras ton bonheur à coup sûr.
    Si tu coinces post nous ton code pour qu'on puisse t'aider.

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Désolé pour le retard du post.

    J'ai essayé ce que tu m'as montré, le "%f" correspond bien à ce que je souhaiterai obtenir. Par contre quand je l'ai intégré dans le code ça n'a pas fonctionné.(lignes 133-136)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    clear all;
    load('test_1.mat');                                 %charger le fichier
    D = test_1;
     
    tk_max = ((2e30)-1)*2e-6 ;
    %Time  = test_.X.Data;       %Isoler les données  
    tk_FL = D.Y(1,5).Data;  %qui nous interesse
    tk_FR = D.Y(1,6).Data;  % du fichier
    tk_RL = D.Y(1,7).Data;
    tk_RR = D.Y(1,8).Data;           %charger les valeurs d'un enregistrement
     
     
    % calcul des largeurs des impulsions
    %Conversion FL
    j1=0;
    deltak_FL=zeros(size(tk_FL));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_FL=zeros(size(tk_FL));
     
    for i1=1:size(tk_FL,2)-1            
        if (tk_FL(i1)~=tk_FL(i1+1)) % test passage de dent
            j1=j1+1;
            if (tk_FL(i1+1)-tk_FL(i1))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_FL(j1)=(tk_FL(i1+1)-tk_FL(i1))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_FL(j1)=D.X.Data(i1);
            else
                deltak_FL(j1)= tk_max - tk_FL(i1)+tk_FL(i1+1);
                t_deltak_FL(j1)=D.X.Data(i1);
            end
        end  
    end
     
    delta_ind_FL=find(deltak_FL~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_FL=find(t_deltak_FL~=0);  % idem mais pour t_deltak_FL
     
    % figure
    % plot(t_deltak_FL(delta_ind_FL),deltak_FL(delta_ind_FL));
    % xlabel('Time (s)')
    % ylabel('indice')
    % grid on
    % title ('valeurs delta t_k');
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion FR
    j2=0;
    deltak_FR=zeros(size(tk_FR));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_FR=zeros(size(tk_FR));
     
    for i2=1:size(tk_FR,2)-1            
        if (tk_FR(i2)~=tk_FR(i2+1)) % test passage de dent
            j2=j2+1;
            if (tk_FR(i2+1)-tk_FR(i2))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_FR(j2)=(tk_FR(i2+1)-tk_FR(i2))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_FR(j2)=D.X.Data(i2);
            else
                deltak_FR(j2)= tk_max - tk_FR(i2)+tk_FR(i2+1);
                t_deltak_FR(j2)=D.X.Data(i2);
            end
        end  
    end
     
    delta_ind_FR=find(deltak_FR~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_FR=find(t_deltak_FR~=0);  % idem mais pour t_deltak_FL
     
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion RL
    j3=0;
    deltak_RL=zeros(size(tk_RL));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_RL=zeros(size(tk_RL));
     
    for i3=1:size(tk_RL,2)-1            
        if (tk_RL(i3)~=tk_RL(i3+1)) % test passage de dent
            j3=j3+1;
            if (tk_RL(i3+1)-tk_RL(i3))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_RL(j3)=(tk_RL(i3+1)-tk_RL(i3))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_RL(j3)=D.X.Data(i3);
            else
                deltak_RL(j3)= tk_max - tk_RL(i3)+tk_RL(i3+1);
                t_deltak_RL(j3)=D.X.Data(i3);
            end
        end  
    end
     
    delta_ind_RL=find(deltak_RL~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_RL=find(t_deltak_RL~=0);  % idem mais pour t_deltak_FL
     
     
    % calcul des largeurs des impulsions--------------------------------------
    %Conversion RR
    j4=0;
    deltak_RR=zeros(size(tk_RR));   %Init deltak_FL et t_deltak_FL à 0
    t_deltak_RR=zeros(size(tk_RR));
     
    for i4=1:size(tk_RR,2)-1            
        if (tk_RR(i4)~=tk_RR(i4+1)) % test passage de dent
            j4=j4+1;
            if (tk_RR(i4+1)-tk_RR(i4))>0 %&& (tk_FL(i1+1)-tk_FL(i1))<0.1
                deltak_RR(j4)=(tk_RR(i4+1)-tk_RR(i4))*1e2; % tk resolution -> 10ms sinon le tk est en s
                t_deltak_RR(j4)=D.X.Data(i4);
            else
                deltak_RR(j4)= tk_max - tk_RR(i4)+tk_RR(i4+1);
                t_deltak_RR(j4)=D.X.Data(i4);
            end
        end  
    end
     
    delta_ind_RR=find(deltak_RR~=0); %range les valeurs de deltak_FL != 0 dans un vecteur
    t_ind_RR=find(t_deltak_RR~=0);  % idem mais pour t_deltak_FL
     
    % reconstitution de la vitesse
    v = (48/(2*pi))./deltak_FL(delta_ind_FL);  %en rad/s
    v=v*2;
     
    % 
    % figure
    % plot(t_deltak_FL(delta_ind_FL), v,'r',D.X.Data, D.Y(2).Data);
    % legend('Vitesse calculee','vitesse mesuree par ABS')
    % xlabel('Time (s)')
    % ylabel('Speed (rad/s)')
    % grid on
    % title ('Vitesse calculée');
    % 
     
    M = nan(max([numel(t_deltak_FL) numel(t_deltak_FR) numel(t_deltak_RL) numel(t_deltak_RR)]),4);
    M(1:numel(t_deltak_FL),1) = t_deltak_FL( : );
    M(1:numel(t_deltak_FR),2) = t_deltak_FR( : );
    M(1:numel(t_deltak_RL),3) = t_deltak_RL( : );
    M(1:numel(t_deltak_RR),4) = t_deltak_RR( : );
     
    save('delta4.asc','M','-ascii');
     
     
    fid = fopen('delta4.asc','r+');
    fprintf('%f',fid)
    %sprintf('%e',1.02e-3) 
    fclose('all'); 
     
    % 
    %whos t_deltak_FL t_deltak_FR t_deltak_RL t_deltak_RR
    %Convertir les données choisies en extension ascii et les rassembler dans
    %le fichier TK.asc
    Ci-joint le fichier que j'obtiens après le traitement.
    Fichiers attachés Fichiers attachés

  14. #14
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %Regarde bien la doc : 
    fprintf(fileID,formatSpec,A1,...,An);
    %et non
    fprintf('%f',fid)

  15. #15
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save('delta4.asc','M','-ascii');
    Si tu souhaites le sauvegarder sous un format précis, cette ligne n'a pas lieu d'être, ce sont les lignes avec fopen/fprintf/fclose qu'il te faut.
    Actuellement tu sauves d'abord avec cette ligne ton tableau, ce qui donne évidement un format non-attendu.
    Puis tu tentes de faire une deuxième sauvegarde avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    fid = fopen('delta4.asc','r+');
    fprintf('%f',fid)
    %sprintf('%e',1.02e-3) 
    fclose('all');
    Mais ces dernières comportant l'erreur mentionnée par FLB, tu as une erreur empêchant ainsi la "bonne" sauvegarde.
    Encore une fois documentation !

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    mais la fonction fprintf ne me permet pas d'enregistrer mon fichier sous l'extension ascii.

    fprintf(fileID, format, A, ...)
    fileID = le fichier que veut utiliser
    format = "%f" pour éviter d'avoir une écriture scientifique
    A = ça je n'ai pas trop compris mais ce n'est pas pour l'extension.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 230
    Points : 352
    Points
    352
    Par défaut
    Si le M de ton programme correspond aux données que tu veux enregistrer, alors le A de fprintf correspond au M de ton programme.

    En regardant la doc, c'est indiqué dans la section "Input Arguments" et les exemples permettent de le voir également.

    De là, tu devrais bien avoir un fichier .asc

    Merci d'avance de faire un retour.
    Je ne réponds pas aux questions techniques via MP. Le but du forum est de permettre de trouver des solutions ensembles pour aider un ensemble de personnes.

    Loi du Chaos Informatique
    L’informatique, ça tient du chaos : une fois ça marche, une fois ça foire, tu sais pas pourquoi, c’est juste que tu viens de changer de lobe sur l’attracteur étrange.

  18. #18
    Invité
    Invité(e)
    Par défaut
    fileID = l'identifiant du fichier obtenu avec fopen
    format = "%f" pour écrire un nombre flottant sous forme non-scientifique
    A = les données que tu souhaites écrire sous le format spécifié !
    Depuis le temps que l'on de demande de consulter la documentation, peut-être serait-il temps de le faire réellement ?!
    Si c'est l'anglais qui pose problème tu as toujours l'outil de Google.
    Tu as aussi un exemple dans la FAQ,dans la documentation et je ne sais combien dans le forum qui possède un outil de recherche.
    Merci de faire un minimum d'effort.

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 58
    Points : 19
    Points
    19
    Par défaut
    En utilisant ces consignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid = fopen('delta4.asc', 'w+');
    fprintf(fid,'%f', 'M')
    fclose('all');
    J'ai bien un fichier.asc de créé, dans le format de donnée que je souhaite. Mais toutes les valeurs que je voulais convertir ont disparues. je me retrouve avec 77.000 à la place de tout le reste !!!

    Je suppose que ça doit être l'identifiant de mon fichier (fid) mais ce n'est pas ce que je voudrais en sortie.

  20. #20
    Invité
    Invité(e)
    Par défaut
    'M' = le caractère M qui n'est rien à voir avec M la variable qui contient tes valeurs.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2009, 20h51
  2. Réponses: 18
    Dernier message: 06/07/2009, 16h01
  3. transfert excel d'un grand nombre de données
    Par djerbafr dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2008, 12h05
  4. Réponses: 5
    Dernier message: 02/09/2007, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo