exponenta event banner

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

Свойства объекта и точечная нотация

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

h = plot(1:10);

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

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

объект. PropertyName

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

Объект (n) .PropertyName

Переменная скалярного объекта

Если h - линия, созданная plot функция, выражение 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

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

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

Копировать переменную объекта

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

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 и 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)

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

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

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

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

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