Фигура-клон в Matlab - со свойствами и данными - PullRequest
10 голосов
/ 09 сентября 2010

Я пишу скрипт в matlab, который выдает цифры для набора данных.

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

Поэтому я хотел бы создать первую фигуру, затем сделать несколько ее копий и вставить в наборы данных.Однако я не знаю, как я могу создать клоны фигуры в Matlab простым способом.

Знаете ли вы, как я могу клонировать фигуры?

В онлайн-документации не былоПомогите.Большое спасибо!

Ответы [ 3 ]

17 голосов
/ 09 сентября 2010

Встроенная функция MATLAB copyobj также должна работать. Вот пример:

peaks;
f2=copyobj(gcf,0);
3 голосов
/ 09 сентября 2010

Вы можете поместить код, который вы используете для генерации вашей базовой фигуры, в функцию, а затем вызвать эту функцию несколько раз, чтобы создать несколько копий вашей базовой фигуры.Вы захотите вернуть графические маркеры для этих фигур (и, возможно, их осей) в качестве выходных данных функции, чтобы модифицировать каждый из них с различным набором нанесенных на график данных.Например, эта функция создает фигуру размером 500 на 500 пикселей, расположенную в 100 пикселях слева и снизу экрана с красным фоном и одной осью с заданным набором входных данных:

function [hFigure,hAxes] = make_my_figure(dataX,dataY)
  hFigure = figure('Color','r','Position',[100 100 500 500]);  %# Make figure
  hAxes = axes('Parent',hFigure);                              %# Make axes
  plot(hAxes,dataX,dataY);  %# Plot the data
  hold(hAxes,'on');         %# Subsequent plots won't replace existing data
end

С помощью вышеуказанной функции, сохраненной в m-файле на вашем пути MATLAB , вы можете сделать три копии фигуры, трижды вызвав make_my_figure с одним и тем же наборомввод данных и сохранение дескрипторов, которые он возвращает в отдельных переменных:

x = rand(1,100);
y = rand(1,100);
[hFigure1,hAxes1] = make_my_figure(x,y);
[hFigure2,hAxes2] = make_my_figure(x,y);
[hFigure3,hAxes3] = make_my_figure(x,y);

И вы можете добавить данные к осям второго рисунка следующим образом:

plot(hAxes2,rand(1,100),rand(1,100));
2 голосов
/ 09 сентября 2010

Удобный способ сгенерировать функцию, которая устанавливает все параметры таким образом, чтобы фигура (как в посте @ gnovice ) выглядела правильно, - создать первую фигуру со всеми данными (включая3D-точки) и все форматирование, а затем выберите в меню FILE команду GENERATE M-FILE ... (посмотрите учебник, связанный здесь).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...