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

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

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

h = plot(1:10);

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

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

объект.

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

объект (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','--')

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

С записью через точку можно использовать индексацию “конца”, чтобы добавить данные к свойствам, которые содержат массивы данных, такие как линия 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)

Query Multiple Properties

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

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

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

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