usubs

Подстановка заданных значений для неопределенных элементов неопределенных объектов

Синтаксис

B = usubs(M,ElementName1,value1,ElementName2,value2,...)
B = usubs(M,S)
B = usubs(M,...,'-once')
B = usubs(M,...,'-batch')

Описание

Использование usubs заменить конкретное значение неопределенным элементом неопределенного объекта модели. Значение может само по себе быть неопределенным. Он должен быть правильным размером, но в противном случае может быть любого класса и может быть массивом. Следовательно, результат может быть любого класса. Таким образом, неопределенные элементы выступают в качестве символических заполнителей, для которых конкретные значения (которые также могут содержать другие заполнители) могут быть заменены.

B = usubs(M,ElementName1,value1,ElementName2,value2,...) устанавливает элементы в M, идентифицированный ElementName1, ElementName2, и т.д., к значениям в value1, value2, и т.д. соответственно.

Можно также использовать векторы символов 'NominalValue' или 'Random' как любой value аргумент. Если это так, используется номинальное значение или случайный образец неопределенного элемента. Можно частично задать эти векторы символов, вместо того, чтобы вводить полное выражение. Для примера можно использовать 'Nom' или 'Rand'.

B = usubs(M,S) экземпляры неопределенных элементов M к значениям, заданным в структуре S. Имена полей S - имена замещаемых неопределенных элементов. Значения являются соответствующими заменяющими значениями. Чтобы обеспечить несколько значений замены, сделайте S массив структур, где каждый struct содержит один набор значений замены. Структура, такая как S обычно происходит из команд анализа робастности, таких как robstab, usample, или wcgain.

B = usubs(M,...,'-once') выполняет векторизованную замену в массиве неопределенных моделей M. Каждый неопределенный элемент заменяется одним значением, но это значение может измениться в массиве моделей. Чтобы задать различные значения подстановки для каждой модели в массиве M, использовать:

  • Массив ячеек для каждого valueN который вызывает неопределенный элемент ElementNameN в M(:,:,k) будет заменено на valueN(k). Для примера, если M - массив ячеек 2 на 3, затем массив ячеек 2 на 3 value1 заменяет ElementName1 модели M(:,:,k) с соответствующим value1(k).

  • Массив структур S который задает один набор значений подстановки S(k) для каждой модели M(:,:,k).

Форматы числовых массивов также приняты для value1,value2,.... Для примера, value1 может быть массивом 2 на 3 моделей LTI, числовым массивом размера [size(name1) 2 3], или матрица 2 на 3, когда неопределенный элемент name1 скалярное значение. Размеры массивов M, S, value1,value2,... необходимо согласовать не синглтонные размерности. Скалярное расширение происходит по синглтонным размерностям.

Векторизованное замещение ('-once') - это значение по умолчанию для массивов моделей, если не задан метод подстановки.

B = usubs(M,...,'-batch') выполняет пакетное замещение в массиве неопределенных моделей M. Каждый неопределенный элемент заменяется массивом значений, и те же значения используются для всех моделей в M. В пакетной замене, B является массив моделей размера [size(M) VS], где VS - размер массива замещающих значений.

Примеры

свернуть все

Вычислите неопределенную матрицу при нескольких различных значениях неопределенных параметров матрицы.

Создайте неопределенную матрицу с двумя неопределенными параметрами.

a = ureal('a',5);
b = ureal('b',-3);
M = [a b];

Вычислите матрицу в четырех различных комбинациях значений для неопределенных параметров a и b.

B = usubs(M,'a',[1;2;3;4],'b',[10;11;12;13]);

Эта команда оценивает M для четырех различных (a, b) комбинации (1,10), (2,11) и так далее. Поэтому B - массив числовых значений 1 на 2 на 4, содержащий четыре оцененных значения M.

Вычислите неопределенную матрицу по сетке 3 на 4 значений неопределенных параметров матрицы.

Создайте неопределенную матрицу 2 на 2 с двумя неопределенными параметрами.

a = ureal('a',5);
b = ureal('b',-3);
M = [a b;0 a*b];

Создайте массивы значений для неопределенных параметров.

aval = [1;2;3;4];
bval = [10;20;30];
[as,bs] = ndgrid(aval,bval);

Эта команда создает две сетки значений 4 на 3.

Вычислите M по сеткам параметров A и B.

B = usubs(M,'a',as,'b',bs);

Эта команда оценивает M для каждой четырех различных комбинаций значений (A(k),B(k)). B массив числовых значений 2 на 2 на 4 на 3, который является массивом значений M 4 на 3, т.е. M вычисляется по сеткам параметров.

Вычислите массив неопределенных моделей, подстановив массив значений неопределенному параметру.

Создайте неопределенную матрицу 1 на 2 с двумя неопределенными параметрами.

a = ureal('a',5);
b = ureal('b',-3);
M = [a b];

Замените a по каждому из значений 1, 2, 3 и 4.

Ma = usubs(M,'a',[1;2;3;4]);

Эта команда возвращает массив 4 на 1 из неопределенных матриц 1 на 2, которые содержат один неопределенный параметр b.

Для каждой модели в массиве Ma, оценить b в 10, 20 и 30.

B = usubs(Ma,'b',[10;20;30],'-batch');

The '-batch' флаг вызывает usubs чтобы вычислить каждую модель в массиве при всех трех значениях b. Таким образом B массив 4 на 3 M значения.

The '-batch' синтаксис здесь приводит к тому же результату, что и параметрический сетчатый подход, используемый в предыдущем примере:

aval = [1;2;3;4];
bval = [10;20;30];
[as,bs] = ndgrid(aval,bval);
B = usubs(M,'a',as,'b',bs);

Вычислите массив неопределенных моделей, подстановив другое значение неопределенному параметру в каждой записи массива.

Создайте неопределенную матрицу 1 на 2 с двумя неопределенными параметрами.

a = ureal('a',5);
b = ureal('b',-3);
M = [a b];

Замените a по каждому из значений 1, 2, 3 и 4.

Ma = usubs(M,'a',[1;2;3;4]);

Эта команда возвращает массив 4 на 1 из неопределенных матриц 1 на 2, которые содержат один неопределенный параметр b.

Для каждой модели в массиве Ma, оценить b. Использование b = 10 для первой записи в массиве, b = 20 для второй записи и так далее.

B = usubs(Ma,'b',{10;20;30;40},'-once');

The '-once' флаг вызывает usubs чтобы вычислить первую модель в массиве с помощью первого заданного значения для b, вторая модель для второго заданного значения и т.д.

Замените неопределенные параметры в неопределенных моделях значениями, заданными в форме массива структур, как возвращено usample.

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

Создайте две неопределенные матрицы, которые имеют одинаковые неопределенные параметры, a и b.

a = ureal('a',5);
b = ureal('b',-3);
M1 = [a b];
M2 = [a b;0 a*b];

Сгенерируйте некоторые случайные выборки M1.

[M1rand,samples] = usample(M1,5);

M1rand - массив из пяти значений M1, оцениваемый при случайным образом сгенерированных значениях a и b. Эти a и b значения возвращаются в массиве структур samples.

Исследуйте массив структур samples.

samples
samples=5×1 struct array with fields:
    a
    b

Имена полей samples соответствуют неопределенным параметрам M1. Значения являются значениями параметров, используемыми для генерации M1rand. Потому что M2 имеет те же параметры, можно использовать эту структуру для оценки M2 при том же множестве значений.

M2rand = usubs(M2,samples);

Эта команда возвращает массив экземпляров 1 на 5 M2.

См. также

| |

Представлено до R2006a