MATLAB: erreur lors de l’utilisation de TextScan Identifiant de fichier non valide Utilisez fopen pour générer un identifiant de fichier valide dans le concepteur d’application

J’utilise un bouton pour télécharger mon fichier « Data.txt » et un autre bouton pour le calculer et le tracer dans les UIaxes mais j’ai une erreur dans « fid = fopen »
 
properties (Access = public)
selectpath='';
end
% Callbacks that handle component events
methods (Access = private)
% Button pushed function: UploadButton
function UploadButtonPushed(app, event)
[file,path] = uigetfile('*.txt')
end
% Button pushed function: CalculateButton
function CalculateButtonPushed(app, event)
fid=fopen(Data.txt(app.selectpath));
fclose(fid); %Error using textscan
% Invalid file identifier.
% Use fopen to generate a valid file identifier.
seek=textscan(fid,'%f %f','headerlines',2);
g = cell2mat(seek);
x=g(:,1);
y=g(:,2);
[sortedX, sortIndex] = sort(x);
sortedY = y(sortIndex);
sortedXLimit = sortedX(1:160,:);
sortedYLimit = sortedY(1:160,:);
plot(app.UIAxes,value*peaks) %for the graph
app.UIAxes.YLim = [0 205];
 

Meilleure réponse

  • Il ne semble pas que votre bouton de téléchargement stocke quoi que ce soit. Il enregistre le fichier et le chemin dansfichieretcheminpuis quitte, à quel point le fichier et le chemin d’accès sont perdus. Cela fonctionnerait:
     
    function UploadButtonPushed(app, event)
    [file,path] = uigetfile('*.txt');
    if file == 0
    % handle case where user clicks cancel
    else
    app.selectpath = fullfile(path, file);
    end
    end
     
    Et puis dans votre autre rappel:
     

    function CalculateButtonPushed(app, event)
    fid=fopen(app.selectpath);
    seek=textscan(fid,'%f %f','headerlines',2);
    ...

     

  • MATLAB: 1. Pour x de 1 à 100, calculez y. Utilisez fopen et fprintf pour écrire des données x et y dans un fichier nommé «the_data.txt». Utilisez ensuite fopen et fscanf pour lire les données. Affichez les données dans deux colonnes. Fonction à utiliser: y = e ^ (0,02x)

    1. Pour x de 1 à 100, calculez y. Utilisez fopen et fprintf pour écrire des données x et y dans un fichier nommé «my_data.txt». Utilisez ensuite fopen et fscanf pour lire les données. Affichez les données dans deux colonnes.Fonction à utiliser: y = e ^ (0,02x)

    Meilleure réponse

  • Veuillez ne pas publier de problèmes de devoirs sans montrer vos tentatives et poser des questions spécifiques. Je me sens généreux, cependant:
    • Apprenez les bases de MATLAB:https://www.mathworks.com/learn/tutorials/matlab-onramp.html
    • Documentation pourfopen, fprintf, fscanf
  • MATLAB: Comment exporter une chaîne avec timeperiod vers un fichier .dat

    J’ai une grande chaîne contenant une période de temps telle que 23-May-2009 02:00:00 (comme jointe). L’éditeur de variables dans Matlab ne peut pas afficher ces variables, car les variables ont plus de 524288 éléments. Je souhaite exporter les variables dans un fichier .dat, afin que je puisse voir la liste des variables. J’essaie d’utiliser les fonctions fopen et fprintf pour exporter les variables, mais sans succès. De l’aide? Je vous remercie.

    Meilleure réponse

  •  

    load hourlyperiod.mat
    d = hourlyperiod ;
    fid = fopen('iwant.dat','w') ;
    for i = 1:length(d)
    fprintf(fid,'%s \n',d(i,:)) ;
    end
    fclose(fid) ;

     

  • MATLAB: comment commencer à remplacer un fichier txt à partir d’une ligne spécifique

    Je suis nouveau sur Matlab et je n’ai pas d’expérience en programmation.
    Le problème est que je dois produire un seul fichier output.txt où je dois imprimer les informations de 2 scripts différents sans supprimer les résultats précédents. Dans le script1, j’ai utilisé des commandes comme fid, fopen, output.txt ‘w’ fprintf .. Dans le second, je ferais la même chose si seulement je ne perdais pas la sortie écrite auparavant.
    Merci d’avance.

    Meilleure réponse

  • Vous pouvez ouvrir le fichier avec l’autorisation «r +».
    Vous ne pouvez pas accéder directement à la ligne souhaitée. Vous pouvez cependant fgetl ou fgets lire dans les lignes avant ce point.
    Une fois que vous avez lu les lignes avant le point que vous souhaitez commencer à écrire, vous devez utiliser fseek () pour rechercher 0 octet par rapport au point actuel. Cela ressemble à une perte de temps, je sais, mais cela indique à matlab de se préparer à passer à l’écriture.
    Ensuite, vous pouvez commencer à écrire le nouveau contenu.
    Avertissement: tous les octets que vous n’écrasez pas resteront le fichier, et il n’y a aucun moyen de supprimer le reste d’un fichier, et aucun moyen de déplacer le reste du fichier plus à gauche ou à droite, donc si vous ne le remplacez pas par exactement le même nombre d’octets, ou bien vous remplacez tout à la fin du fichier et éventuellement au-delà, vous risquez de vous retrouver avec du contenu que vous ne voulez pas.
    Parce que le remplacement au milieu d’un fichier texte doit être exactement pour le même nombre d’octets (pas de caractères), il est presque toujours préférable de ne pas faire ça!
    C’est-à-dire que dans la plupart des cas avec des fichiers texte, vous devez plutôt créer un nouveau fichier contenant le contenu que vous souhaitez (éventuellement en lire la plupart à partir de l’ancien fichier) au lieu de modifier l’intérieur d’un fichier texte existant.
  • MATLAB: En ligne

    [EDIT: Sat Jun 11 05:03:32 UTC 2011 – Reformatage – MKF]
     
    function wr(vect, nomf)
    [x y]=size(vect);
    write=fopen(nomf,'w');
    for i=1:y
    fprintf(write,'%d\n',vect(1,i));
    end
    fclose(write);
    end
     
    J’utilise ce code dans l’espoir de voir le résultat dans un fichier .txt quelque sorte vertical:
     
    1
    2
    3
     
    mais le vrai résultat est: 123 À quoi sert \ n exactement, j’ai trouvé dans l’aide, il utilise get a linefeed. Tout le monde le sait, merci de m’aider!

    Meilleure réponse

  • Si vous ouvrez le fichier dans Wordpad, vous devriez le voir vertical.
    Pour lui donner un aspect vertical dans le bloc-notes, utilisez:
     

    %d\r\n