Comment puis-je extraire des données à partir d'un.fig file in MATLAB?

je sais que c'est vraiment basique, mais je suis nouveau à MATLAB. Après l'ouverture d'une .fig file, Comment travaillez-vous réellement avec les données tracées dans la fenêtre de commande? Tout ce que je vois est de la parcelle. Je ne sais pas comment obtenir les données.

21
demandé sur Brian Tompsett - 汤莱恩 2010-06-04 21:46:51

4 réponses

en fait, vous n'avez même pas à afficher le chiffre pour obtenir les données. Les fichiers de figues sont stockés dans le format Matlab standard, que vous pouvez lire en utilisant le load () fonction. La figure poignées et les données sont stockées dans une structure que vous pouvez facilement comprendre et traiter.

17
répondu Yair Altman 2010-12-11 16:31:44

Voici une façon très simple:

Cliquez sur l'objet que vous souhaitez pour obtenir les données. Rien n'indique que vous avez cliqué dessus.

>> xd = get(gco,'XData');
>> yd = get(gco,'YData');

Parfois, il peut être difficile de cliquer sur la ligne, ou d'un autre objet, lui-même. Si vous avez ce problème, cliquez sur les axes qui contiennent les enfants qui vous intéressent, puis:

>> kids = get(gca,'Children');

Cela vous donnera une gamme de poignées pour les différents enfants. Vous pouvez essayer de leur obtenir un à un le temps en indexant dans les enfants, ou utilisez ce qui suit pour obtenir toutes les données à la fois. Cela permet de retourner les résultats sous forme de tableau de cellules, ce qui peut être un peu délicat si vous ne les avez pas utilisés auparavant:

>> xd = get(kids,'XData');
>> yd = get(kids,'YData');
>> xd1 = xd{1}; %# X Data from first line
12
répondu Scott Hirsch 2010-06-07 14:22:37

essayez hgload, puis examinez la structure de la poignée graphique qu'il renvoie. Par exemple, si vous intrigue et d'enregistrer les suivants:

x=0:.01:10;
y=sin(x);
h=plot(x,y);
saveas(h,'testfigure.fig');

Videz votre espace de travail, et ouvrez la figure sauvegardée en utilisant hgload:

clear
close all
h=hgload('testfigure.fig');

vous pouvez inspecter la poignée de la figure h en appelant

get(h)

Ou approfondir les axes/titres/légendes en appelant

ch=get(h,'Children');

si vous utilisez le code dans mon exemple, vous ne devriez avoir qu'un enfant pour la figure, qui seront les axes. Appelez les enfants des haches, et vous devriez avoir une ligne.

l=get(ch,'Children');

ensuite, appelez les champs' Xdata 'et' Ydata ' de la ligne, et vous avez vos données originales.

x=get(l,'Xdata');
y=get(l,'Ydata');

si vous avez une figure plus compliquée que des haches, ça devient un peu plus difficile. Vous aurez besoin d'explorer chaque enfant pour déterminer si c'est la parcelle que vous vouliez extraire des données.

10
répondu Doresoom 2010-07-16 17:38:10

utilisez la commande HGLOAD. Référence disponible ici.

2
répondu Jordan Lewis 2010-06-04 19:01:26