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

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

Результатом является одномерный массив неопределенных матриц, а не 3D неопределенный массив. Точно так же четырехмерный числовой массив преобразовывает в двумерный массив объектов 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.

Смотрите Управление массивами для Неопределенных Объектов для получения дополнительной информации о многомерных массивах неопределенных объектов.

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте