Замена скаляров матрицами

Создайте следующее выражение, представляющее функцию синуса.

syms w t
f = sin(w*t);

Предположим, ваша задача включает в себя создание матрицы, элементы которой являются синусоидальными функциями с скоростями вращения, представленными матрицей Теплица. Сначала создайте матрицу Теплица 4 на 4.

W = toeplitz(sym([3 2 1 0]))
W =
[ 3, 2, 1, 0]
[ 2, 3, 2, 1]
[ 1, 2, 3, 2]
[ 0, 1, 2, 3]

Затем замените переменную w в выражении f с матрицей Теплица W. Когда вы заменяете скаляр в символьном выражении на матрицу, subs расширяет выражение в матрицу. В этом примере, subs расширяет f = sin(w*t) в матрицу 4 на 4, элементы которой sin(w*t). Затем он заменяет w в этой матрице с соответствующими элементами матрицы Теплица W.

F = subs(f, w, W)
F =
[ sin(3*t), sin(2*t),   sin(t),        0]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[        0,   sin(t), sin(2*t), sin(3*t)]

Найдите сумму этих синусоид в t = π, t = π/2, t = π/3, t = π/4, t = π/5, и t = π/6. Во-первых, найдите сумму всех элементов матрицы F. Здесь первый вызов на sum возвращает вектор-строку, содержащую суммы элементов в каждом столбце. Второй вызов на sum возвращает сумму элементов этого вектора-строки.

S = sum(sum(F))
S =
6*sin(2*t) + 4*sin(3*t) + 4*sin(t)

Теперь используйте subs для оценки S для конкретных значений переменной t.

subs(S, t, sym(pi)./[1:6])
[ 0,...
  0,...
  5*3^(1/2), 4*2^(1/2) + 6,...
  2^(1/2)*(5 - 5^(1/2))^(1/2) + (5*2^(1/2)*(5^(1/2) + 5)^(1/2))/2,...
  3*3^(1/2) + 6]

Вы также можете использовать subs чтобы заменить скалярный элемент массива матрицы на другую матрицу. В этом случае, subs расширяет матрицу для размещения новых элементов. Для примера замените нулевые элементы матрицы F с помощью вектора-столбца [1;2]. Исходная матрица 4 на 4 F расширяется до матрицы 8 на 4. subs функция дублирует каждую строку исходной матрицы, а не только строки, содержащие нулевые элементы.

F = subs(F, 0, [1;2])
F =
[ sin(3*t), sin(2*t),   sin(t),        1]
[ sin(3*t), sin(2*t),   sin(t),        2]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[ sin(2*t), sin(3*t), sin(2*t),   sin(t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[   sin(t), sin(2*t), sin(3*t), sin(2*t)]
[        1,   sin(t), sin(2*t), sin(3*t)]
[        2,   sin(t), sin(2*t), sin(3*t)]