Как извлечь данные из файла .fig в MATLAB? - PullRequest
22 голосов
/ 04 июня 2010

Я знаю, что это действительно просто, но я новичок в MATLAB. После открытия файла .fig, как вы на самом деле работаете с построенными данными в командном окне? Я вижу только сюжет. Я не уверен, как на самом деле получить данные.

Ответы [ 4 ]

17 голосов
/ 11 декабря 2010

На самом деле, вам даже не нужно отображать цифру, чтобы получить данные. Файлы FIG хранятся в стандартном формате Matlab MAT, который вы можете прочитать, используя встроенную функцию load () . Дескрипторы рисунка и данные хранятся в структуре, которую вы можете легко понять и обработать.

12 голосов
/ 07 июня 2010

Вот действительно простой способ:

Нажмите на объект, с которого вы хотите получить данные. Там не будет никаких признаков того, что вы нажали на него.

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

Иногда бывает сложно щелкнуть мышью по строке или другому объекту. Если у вас возникла эта проблема, щелкните по осям, в которых содержится интересующий вас ребенок (дети), а затем:

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

Это даст вам множество дескрипторов для различных детей. Вы можете попробовать получать их по одному, индексируя детей, или использовать следующее, чтобы получить все данные одновременно. Это вернет результаты в виде массива ячеек, что может быть немного сложнее, если вы не использовали их ранее:

>> xd = get(kids,'XData');
>> yd = get(kids,'YData');
>> xd1 = xd{1}; %# X Data from first line
10 голосов
/ 04 июня 2010

Попробуйте hgload, а затем изучите структуру графического дескриптора, которую он возвращает. Например, если вы строите и сохраняете следующее:

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

Очистите рабочее пространство и откройте сохраненную фигуру, используя hgload:

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

Вы можете проверить ручку фигуры h, позвонив по номеру

get(h)

Или углубиться в топоры / титулы / легенды, позвонив по номеру

ch=get(h,'Children');

Если вы используете код в моем примере, у вас должен быть только один дочерний элемент для фигуры, который будет осью. Назовите детей топоров, и у вас должна быть одна строка.

l=get(ch,'Children');

Далее, назовите поля 'Xdata' и 'Ydata' в строке, и вы получите ваши исходные данные.

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

Если у вас есть более сложная фигура, чем просто топоры, она становится немного жестче. Вам нужно будет изучить каждого ребенка, чтобы определить, из какого графика вы хотите извлечь данные.

2 голосов
/ 04 июня 2010

Используйте команду HGLOAD. Ссылка доступна здесь .

...