Доступ к значениям свойств

Свойства объекта и запись через точку

Функциям построения графика вернете объект или объекты, созданные функцией. Для примера:

h = plot(1:10);

h относится к линии, нарисованной в графике значений с 1 по 10.

Синтаксис dot notation использует переменную объекта и имя свойства с учетом регистра, соединенное с точкой (.) для формирования записи имени свойства точки обозначения:

объект. PropertyName

Если переменная объекта является нескалярной, используйте индексацию для ссылки на один объект:

объект (n) .PropertyName

Скалярная переменная объекта

Если h - линия, созданная plot function, выражение h.Color - значение этой линии Color свойство:

h.Color
ans =

         0    0.4470    0.7410

Если вы присвоите значение цвета переменной:

c = h.Color;

Переменная c является двойником.

whos
  Name      Size            Bytes  Class  

  c         1x3                24  double   
  h         1x1               112  matlab.graphics.chart.primitive.Line 

Вы можете изменить значение этой линии Color свойство с оператором назначения:

h.Color = [0 0 1];

Используйте ссылки на свойства записи через точку в выражениях:

meanY = mean(h.YData);

Или изменить значение свойства:

h.LineWidth = h.LineWidth + 0.5;

Ссылка на другие объекты, содержащиеся в свойствах с несколькими ссылками на точку:

h.Annotation.LegendInformation.IconDisplayStyle
ans =

on

Установите свойства объектов, содержащихся в свойствах:

ax = gca;
ax.Title.FontWeight = 'normal';

Нескалярная переменная объекта

Графические функции могут возвращать массив объектов. Для примера:

y = rand(5);
h = plot(y);
size(h)
ans =

     5     1

Доступ к линии, представляющей первый столбец в y использование индекса массива:

h(1).LineStyle = '--';

Используйте set функция для установки LineStyle из всех линий массива:

set(h,'LineStyle','--')

Добавление данных к значениям свойств

С помощью записи через точку можно использовать индексацию «end», чтобы добавить данные к свойствам, которые содержат массивы данных, такие как линии XData и YData. Для примера этот код обновляет линию XData и YData вместе, чтобы вырастить линию. Перед визуализацией вызова необходимо убедиться, что размер x - и y-данных линии совпадает drawnow или возврат к MATLAB® приглашение.

h = plot(1:10);
for k = 1:5
   h.XData(end + 1) = h.XData(end) + k;
   h.YData(end + 1) = h.YData(end) + k;
   drawnow
end

Переменные графического объекта являются указателями

Переменные объекта, возвращенные графическими функциями, handles. Указатели являются ссылками на фактические объекты. Переменные объекта, которые являются указателями, ведут себя определенными способами при копировании и при удалении объекта.

Копирование переменной объекта

Для примера создайте график с одной строкой:

h = plot(1:10);

Теперь скопируйте переменную объекта в другую переменную и установите значение свойства с новой переменной объекта:

h2 = h;
h2.Color = [1,0,0]

Назначение переменной объекта h на h2 создает копию указателя, но не объект, на который ссылается переменная. Значение Color свойство, доступное из переменной h то же самое, что и доступ из переменной h2.

h.Color
ans =

     1     0     0

h и h2 обратитесь к тому же объекту. Копирование переменной объекта указателя не копирует объект.

Удаление переменных объекта

Теперь в рабочей области есть две переменные объекта, которые ссылаются на одну линию.

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

Теперь закройте рисунок, содержащую линейный график:

close gcf

Объект линия больше не существует, но переменные объекта, которые ссылаются на линию, все еще существуют:

whos
  Name      Size            Bytes  Class                
  h         1x1               112  matlab.graphics.chart.primitive.Line
  h2        1x1               112  matlab.graphics.chart.primitive.Line

Однако переменные объекта больше не действительны:

h.Color
Invalid or deleted object.
h2.Color = 'blue'
Invalid or deleted object.

Чтобы удалить недопустимые переменные объекта, используйте clear:

clear h h2

Описание свойств объекта

Чтобы увидеть свойства, содержащиеся в объекте, используйте get функция:

get(h)

MATLAB возвращает список свойств объектов и их текущих значений:

    AlignVertexCenters: 'off'
            Annotation: [1x1 matlab.graphics.eventdata.Annotation]
          BeingDeleted: 'off'
            BusyAction: 'queue'
         ButtonDownFcn: ''
              Children: []
              Clipping: 'on'
                 Color: [0 0.4470 0.7410]
...
             LineStyle: '-'
             LineWidth: 0.5000
                Marker: 'none'
...

Вы можете увидеть значения для свойств с перечисленным набором возможных значений, используя set функция:

set(h,'LineStyle')
    '-'
    '--'
    ':'
    '-.'
    'none'

Чтобы отобразить все настраиваемые свойства, включая возможные значения для свойств с перечисленным множеством значений, используйте set с переменной объекта:

set(h)

Изменение свойств с набором и получение

Вы также можете получить доступ и изменить свойства, используя set и get функций.

Основной синтаксис для настройки значения свойства в существующем объекте:

set(object,'PropertyName',NewPropertyValue)

Чтобы запросить текущее значение определенного свойства объекта, используйте оператор формы:

returned_value = get(object,'PropertyName');

Имена свойства всегда являются векторами символов. Можно использовать одинарные кавычки или переменную, являющуюся вектором символов. Значения свойств зависят от конкретного свойства.

Операции с несколькими объектами/свойствами

Если аргумент объекта является массивом, MATLAB устанавливает заданное значение для всех идентифицированных объектов. Для примера:

y = rand(5);
h = plot(y);

Установите все линии красным цветом:

set(h,'Color','red')

Чтобы задать одинаковые свойства для ряда объектов, задайте имена свойства и значения свойств с помощью структуры или массива ячеек. Для примера задайте структуру, чтобы задать свойства осей соответствующим образом, чтобы отобразить конкретный график:

view1.CameraViewAngleMode = 'manual';
view1.DataAspectRatio = [1 1 1];
view1.Projection = 'Perspective';

Чтобы задать эти значения на текущей системе координат, введите:

set(gca,view1)

Запрос нескольких свойств

Можно задать массив ячеек с именами свойства и использовать его, чтобы получить значения для этих свойств. Например, предположим, что вы хотите запросить значения свойств axes «camera mode». Во-первых, задайте массив ячеек:

camModes = {'CameraPositionMode','CameraTargetMode',...
'CameraUpVectorMode','CameraViewAngleMode'};

Используйте этот массив ячеек в качестве аргумента, чтобы получить текущие значения этих свойств:

get(gca,camModes)
ans = 
     'auto' 'auto' 'auto' 'auto'