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