2017-10-06 3 views
0

J'essaie d'ouvrir un fichier texte dans MATLAB et de le tracer dans un graphique. Ce qui suit est mon code:Ouvrez un fichier texte, scannez-le et tracez-le dans MATLAB

%% Get the data 
[filename, pathname] = uigetfile('*txt', 'Pick text file'); 
x=filename(:,1); 
y=filename(:,2); 
plot(x,y); 

Mais chaque fois que je lance, je me l'erreur suivante:

Error using plot 
Invalid first data argument. 
Error in readtxtfile (line 5) 
plot(x,y); 

Le fichier texte importé que je dispose de 2 lignes. J'ai l'intention de tracer la première rangée avec le deuxième plot (rang 1, rang 2) dans MATLAB.

Répondre

1

Vous avez le nom du fichier stocké dans filename combiné avec le chemin d'accès au répertoire où le fichier est stocké dans pathname mais vous n'avez pas lu le contenu. Pour ce faire, le plus simple serait d'utiliser dlmread. Je suppose que votre fichier texte est correctement formaté pour avoir deux lignes de données comme vous l'avez indiqué. Si c'est le cas, vous devez modifier la manière dont vous indexez vos données. Vous avez l'indexation de colonnes entières au lieu de lignes, vous devez donc retourner l'indexation dans votre code. , Vous devez également un appel à dlmread, puis accéder aux colonnes de la matrice résultante:

%% Get the data 
[filename, pathname] = uigetfile('*txt', 'Pick text file'); 
data = dlmread(fullfile(pathname, filename)); 
x=data(1,:); 
y=data(2,:); 
plot(x,y); 

Notez que je fait le chemin complet vers le fichier à utiliser fullfile parce que l'utilisation uigetfile vous permet de lire dans un fichier où que vous soyez sur votre ordinateur, nous nous assurons que nous capturons le chemin complet de votre fichier. Encore une fois, pour réitérer, pathname est le répertoire où le fichier est contenu et filename est le nom du fichier contenu dans le répertoire.

+0

ce code fonctionne j'ai pu le représenter ensemble ... mais ce que j'ai obtenu était juste une intrigue en ligne droite que je ne cherchais pas Je ne suis pas sûr de savoir comment cela s'est passé Je pense qu'il n'a pas lu les valeurs dans le fichier txt – Matlaber

+0

il a fonctionné maintenant par les modifications suivantes 'x = données (:, 1);' 'y = données (:, 2);' – Matlaber

+0

Vous avez dit que votre fichier texte avait deux ROWS, pas COLONNES. à l'avenir, assurez-vous de connaître leurs différences. C'est pourquoi j'ai changé le code pour être ainsi comparé à votre original. – rayryeng