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

Неопределенные матрицы (класс 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.

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

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

|

Похожие темы