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

Неопределенные матрицы (класс umat) построены из двойных и неопределенных элементов, с использованием традиционных MATLAB®синтаксис создания матрицы. Неопределенные матрицы могут быть добавлены, вычтены, умножены, инвертированы, транспонированы и т.д., что приводит к неопределенным матрицам. Строки и столбцы неопределенной матрицы ссылаются таким же образом, как MATLAB ссылается на строки и столбцы массива, используя круглые скобки и целочисленные индексы. The 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

The 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.

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

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

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

Для примера - преждевременно M по 1-by-3 числовая матрица, в результате чего получается umat 1 на 2.

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.

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

См. также

|

Похожие темы