2013-11-02 2 views
1

У меня есть .fig файл, который я хочу изменить только 2 значения по оси x.Как изменить некоторые значения оси x в файле .fig в MATLAB?

Как это возможно, если у меня нет исходного кода? Существует только файл .fig.

+0

Изменить ярлыки или фактические значения? –

+0

@LuisMendo Фактические значения – BlueBit

ответ

1

вытягивать данные с get(gca,...), вероятно, является самым простым решением. Тем не менее, есть некоторые другие неясные, но полезные функции MATLAB, о которых стоит упомянуть.

Во-первых, способность MATLAB генерировать M-файлы из цифр, которые могут быть использованы для воссоздания и изменения фигуры программно. Просто нажмите на следующий пункт меню, и вы получите новую функцию в редакторе, например function createfigure(X1, Y1), которая точно воссоздает рисунок, но с некоторыми новыми данными X1 и Y1.

enter image description here

Другая вещь, стоит упомянуть то, что .fig файлы действительно MAT-файлы, содержащие данные, указывающие на фигуру. Например, следующие команды будут загружать данные .fig в struct в MATLAB, и вы можете получить доступ к данным сюжетные легко:

>> f = load('testjunk.fig','-mat') 
f = 
    hgS_070000: [1x1 struct] 
>> axesNum = 1; seriesNum = 1; 
>> series = f.hgS_070000.children(axesNum).children(seriesNum) 
series = 
      type: 'graph2d.lineseries' 
     handle: 172.0051 
    properties: [1x1 struct] 
     children: [] 
     special: [] 
>> X1 = series.properties.XData 
ans = 
    0.0305 0.7441 0.5000 0.4799 0.9047 
>> Y1 = series.properties.YData 
ans = 
    0.6099 0.6177 0.8594 0.8055 0.5767 

Комбинируйте, чтобы получить работу.

2

В соответствии с вашими комментариями: у вас есть одна пара х - и у -axes, с несколькими участками в нем, и вы хотите изменить значения.

Откройте файл .fig и сделать:

aux = get(gca,'Children'); %// get all plots within current axes 
n = 1; %// or 2 or 3, whichever plot you want to change 
x = get(aux(n),'XData'); %// x values of selected plot 

Это даст вам х ось значений в переменной x. Изменить эту переменную по мере необходимости, а затем положить его обратно в сюжет:

set(aux(n),'XData',x) 
+0

У меня есть сюжет с тремя фигурами. Я получаю эту ошибку: Ошибка при использовании get Недействительное свойство найдено. Название объекта: текст Название недвижимости: 'XData'. – BlueBit

+0

Я имею в виду не подзаголовок. подрисунков. три полиномиальных функции на графике. – BlueBit

+0

См. Ответ сейчас –

Смежные вопросы