Как я могу извлечь данные из .fig файла в MATLAB?

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

22
задан Brian Tompsett - 汤莱恩 23 November 2015 в 19:30
поделиться

3 ответа

Попробуйте 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');

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

10
ответ дан 29 November 2019 в 04:40
поделиться

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

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

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

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

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

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

>> xd = get(kids,'XData');
>> yd = get(kids,'YData');
>> xd1 = xd{1}; %# X Data from first line
13
ответ дан 29 November 2019 в 04:40
поделиться

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

2
ответ дан 29 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: