exponenta event banner

Неопределенные матрицы

Неопределенные матрицы (класс umat) построены из двойных и неопределенных элементов, используя традиционный синтаксис MATLAB ® matrix building. Неопределенные матрицы могут быть добавлены, вычитаны, умножены, инвертированы, транспонированы и т.д., что приводит к неопределенным матрицам. Строки и столбцы неопределенной матрицы ссылаются так же, как MATLAB ссылается на строки и столбцы массива, используя круглые скобки и целочисленные индексы. NominalValue неопределенной матрицы - результат, получаемый при замене всех неопределенных элементов на собственные NominalValue. Неопределенные элементы, составляющие umat доступны через Uncertainty шлюз и свойства каждого элемента в пределах umat может быть изменен непосредственно. Свойства:

Свойства

Значение

Класс

NominalValue

Номинальное значение элемента

double

Uncertainty

Неопределенные блоки в матрице, хранящиеся как структура, поля которой названы в честь неопределенных блоков и содержат неопределенные элементы, такие как ureal.

struct

SamplingGrid

Сетка отбора проб, для umat массивы, хранящиеся как структура, поля которой названы в честь переменных выборки и содержат значения выборки, связанные с соответствующей моделью в массиве.

struct

Name

umat имя. При преобразовании блока проектирования статического элемента управления, например ureal в неопределенную матрицу с использованием umat(blk), Name свойство блока сохраняется.

char

Используя usubs, конкретные значения могут быть заменены для любого из неопределенных элементов в umat. Команда usample генерирует случайную выборку неопределенной матрицы, заменяя случайные выборки (в пределах их диапазонов) для каждого из неопределенных элементов.

Команда wcnorm вычисляет жесткие границы для наихудшего случая (максимум в диапазонах неопределенных элементов) нормы неопределенной матрицы.

Стандартные числовые матрицы MATLAB (т. е. double) естественно можно рассматривать как неопределенные матрицы без какой-либо неопределенности.

Создание неопределенных матриц и управление ими

Создаются неопределенные матрицы (umat объекты) путем создания неопределенных параметров и их использования для построения матриц. Затем можно использовать неопределенные матрицы для построения неопределенных моделей состояния-пространства. В этом примере показано, как создать неопределенную матрицу, получить доступ и изменить ее неопределенные параметры, извлечь элементы и выполнить арифметику матрицы.

Например, создайте два неопределенных вещественных параметра и используйте их для создания неопределенной матрицы 3 на 2.

a = ureal('a',3); 
b = ureal('b',10,'Percentage',20); 
M = [-a, 1/b; b, a+1/b; 1, 3]
M =

  Uncertain matrix with 3 rows and 2 columns.
  The uncertainty consists of the following blocks:
    a: Uncertain real, nominal = 3, variability = [-1,1], 2 occurrences
    b: Uncertain real, nominal = 10, variability = [-20,20]%, 3 occurrences

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

Проверка и изменение umat Свойства

M является umat объект. Проверьте его свойства с помощью get.

get(M)
    NominalValue: [3x2 double]
     Uncertainty: [1x1 struct]
    SamplingGrid: [1x1 struct]
            Name: ''

Номинальное значение M - матрица, полученная заменой всех неопределенных элементов их номинальными значениями.

M.NominalValue
ans = 3×2

   -3.0000    0.1000
   10.0000    3.1000
    1.0000    3.0000

Uncertainty свойство - это структура, содержащая неопределенные элементы (управляющие блоки проектирования) M.

M.Uncertainty
ans = struct with fields:
    a: [1x1 ureal]
    b: [1x1 ureal]

M.Uncertainty.a
ans = 
  Uncertain real parameter "a" with nominal value 3 and variability [-1,1].

Используйте Uncertainty свойство для прямого доступа к неопределенным элементам. Например, проверьте Range неопределенного элемента a в M.

M.Uncertainty.a.Range
ans = 1×2

     2     4

Диапазон: [2,4] потому что вы создали ureal параметр a с номинальным значением 3 и неопределенностью по умолчанию +/- 1. Измените диапазон на [2.5,5].

M.Uncertainty.a.Range = [2.5,5]
M =

  Uncertain matrix with 3 rows and 2 columns.
  The uncertainty consists of the following blocks:
    a: Uncertain real, nominal = 3, variability = [-0.5,2], 2 occurrences
    b: Uncertain real, nominal = 10, variability = [-20,20]%, 3 occurrences

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

Это изменение на a происходит только в течение M. Убедитесь, что переменная a в рабочей области MATLAB по-прежнему имеет исходный диапазон.

a.Range
ans = 1×2

     2     4

Нельзя комбинировать элементы с общим внутренним именем, но различными свойствами. Так, например, ввод M.Uncertainty.a - a приведет к возникновению ошибки, поскольку realp параметр a в рабочем пространстве имеет свойства, отличные от свойств элемента a в M.

Ссылки на строки и столбцы

Можно использовать стандартные ссылки на столбцы строк для извлечения элементов из umat. Например, извлечь выбор 2 на 2 из M состоит из второго и третьего рядов.

Msub = M(2:3,:)
Msub =

  Uncertain matrix with 2 rows and 2 columns.
  The uncertainty consists of the following blocks:
    a: Uncertain real, nominal = 3, variability = [-0.5,2], 1 occurrences
    b: Uncertain real, nominal = 10, variability = [-20,20]%, 2 occurrences

Type "Msub.NominalValue" to see the nominal value, "get(Msub)" to see all properties, and "Msub.Uncertainty" to interact with the uncertain elements.

Одиночное индексирование можно использовать только в том случае, если umat является одним столбцом или строкой. Выбор одного столбца из M и использовать одноиндексные ссылки для доступа к его элементам.

Msing = M([2 1 2 3],2);
Msing(2)
ans =

  Uncertain matrix with 1 rows and 1 columns.
  The uncertainty consists of the following blocks:
    b: Uncertain real, nominal = 10, variability = [-20,20]%, 1 occurrences

Type "ans.NominalValue" to see the nominal value, "get(ans)" to see all properties, and "ans.Uncertainty" to interact with the uncertain elements.

Индексирование можно использовать для изменения значения любого элемента umat. Например, установите (3,2) запись M неопределенному параметру c.

c = ureal('c',3,'Percentage',40);
M(3,2) = c
M =

  Uncertain matrix with 3 rows and 2 columns.
  The uncertainty consists of the following blocks:
    a: Uncertain real, nominal = 3, variability = [-0.5,2], 2 occurrences
    b: Uncertain real, nominal = 10, variability = [-20,20]%, 2 occurrences
    c: Uncertain real, nominal = 3, variability = [-40,40]%, 1 occurrences

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

М теперь имеет три неопределенных блока.

Матричные операции на umat Объекты

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

Например, предварительно перемножить M по 1-by-3 числовая матрица, приводящая к 1 на 2 umat.

M1 = [2 3 1]*M;

Убедитесь, что первая запись M1 как и ожидалось, -2*a + 3*b + 1.

d = M1(1) - (-2*M.Uncertainty.a + 3*M.Uncertainty.b + 1)
d =

  Uncertain matrix with 1 rows, 1 columns, and no uncertain blocks.

Type "d.NominalValue" to see the nominal value, "get(d)" to see all properties, and "d.Uncertainty" to interact with the uncertain elements.

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

H = M.'*M; 
K = inv(H); 
usample(K*H,3)
ans = 
ans(:,:,1) =

    1.0000    0.0000
   -0.0000    1.0000


ans(:,:,2) =

    1.0000    0.0000
   -0.0000    1.0000


ans(:,:,3) =

    1.0000   -0.0000
   -0.0000    1.0000

Подъем двойной матрицы в umat

Можно преобразовать числовую матрицу в umat объект без неопределенных элементов. Используйте umat для подъема двойной матрицы в umat класс. Например:

Md = [1 2 3;4 5 6]; 
M = umat(Md)
M =

  Uncertain matrix with 2 rows, 3 columns, and no uncertain blocks.

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

Можно также преобразовать более высокоразмерные числовые матрицы в umat. При этом программа интерпретирует третье измерение и за его пределами как измерения массива. Например, преобразовать случайный трехмерный числовой массив в umat.

Md = randn(4,5,6); 
M = umat(Md)
M =

  6x1 array of uncertain matrices with 4 rows, 5 columns, and no uncertain blocks.

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

Результатом является одномерный массив неопределенных матриц, а не трехмерный неопределенный массив. Аналогично, четырехмерный числовой массив преобразуется в двумерный массив umat объекты.

Md = randn(4,5,6,7); 
M = umat(Md)
M =

  6x7 array of uncertain matrices with 4 rows, 5 columns, and no uncertain blocks.

Type "M.NominalValue" to see the nominal value, "get(M)" to see all properties, and "M.Uncertainty" to interact with the uncertain elements.

Дополнительные сведения о многомерных массивах неопределенных объектов см. в разделе Управление массивами для неопределенных объектов.

См. также

|

Связанные темы