Подтвердить что ты не робот

Перерисовать фигуру, сохраненную в 2013bb в 2014b

По мере того, как MATLAB изменил механизм своих фигур в R2014b, я решил повторить некоторые из моих кодов, чтобы получить из них более привлекательные цифры. К сожалению, последний, который у меня есть, - это код, который требует времени для запуска, и я бы очень хотел избежать повторного запуска кода для более красивой фигуры.

Я сохранил результат в файле .fig в R2013b. Однако, если я открою его в R2014b, он все еще имеет старый формат.

Можно ли перерисовать фигуру с помощью механизма построения MATLAB R2014b? Если это так, как я могу это сделать?

ПРИМЕЧАНИЕ. Буквально, рисунок открывается и рисуется с помощью нового движка, однако он сохраняет старый формат. В то время как новая фигура с командой title() построила бы красивый большой полужирный шрифт, если перерисовать эту фигуру с помощью "drawow" или я сгенерирую код для нее, формат останется тем же.

Пример: Эта цифра была создана в 2013b и перерисована в 2014b. Вы можете видеть, что заголовок не отображается в том же формате, что и title('whatever'), который будет отображаться в новых графических ручках. Похоже, что ".fig" сохраняет и устанавливает значения по умолчанию для версии, которую он сгенерировал. Таким образом, цвета рисунка, заголовки, метки и т.д. Будут выглядеть как старые графические ручки при перерисовании.

введите описание изображения здесь

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

rng(1)


figure()
x = 1:50;
y = rand(1, 50);

plot(x,y)
title('this NICE Title')
xlabel('labels!')
ylabel('some other labels','Interpreter','Latex')

Если этот код запускается в 2013b и 2014b, сохраняется как фиг в обоих, а затем открывается как рисунок в обоих, появляются следующие 2 цифры:

введите описание изображения здесь введите описание изображения здесь

Файл фида 2013b: http://s000.tinyupload.com/index.php?file_id=02053933004513599550

4b9b3361

Ответ 1

Для этого существует окольный путь - просто используя hgopen для загрузки фигуры, а затем извлеките данные, чтобы переделать их в 2014b:

h1=hgopen('test.fig');              % h1 = handle to the figure
allaxes=get(h1,'children');         % allaxes = array with axes handles 
for a=1:length(allaxes)
    ax=allaxes(a);
    allines=get(ax,'children');     % all lines in current axes
    for l=1:length(allines)
        lin=allines(l);
        values=get(lin,'ydata');    % values of the current line
        subplots{a}{l}=values;
    end
end

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