This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Substitute Scalars with Matrices

Create the following expression representing the sine function.

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

Suppose, your task involves creating a matrix whose elements are sine functions with angular velocities represented by a Toeplitz matrix. First, create a 4-by-4 Toeplitz matrix.

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

Next, replace the variable w in the expression f with the Toeplitz matrix W. When you replace a scalar in a symbolic expression with a matrix, subs expands the expression into a matrix. In this example, subs expands f = sin(w*t) into a 4-by-4 matrix whose elements are sin(w*t). Then it replaces w in that matrix with the corresponding elements of the Toeplitz matrix 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)]

Find the sum of these sine waves at t = π, t = π/2, t = π/3, t = π/4, t = π/5, and t = π/6. First, find the sum of all elements of matrix F. Here, the first call to sum returns a row vector containing sums of elements in each column. The second call to sum returns the sum of elements of that row vector.

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

Now, use subs to evaluate S for particular values of the variable t.

subs(S, t, sym(pi)./[1:6])
[ 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]

You also can use subs to replace a scalar element of a matrix with another matrix. In this case, subs expands the matrix to accommodate new elements. For example, replace zero elements of the matrix F with a column vector [1;2]. The original 4-by-4 matrix F expands to an 8-by-4 matrix. The subs function duplicates each row of the original matrix, not only the rows containing zero elements.

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)]