# Numerical Tools in Matlab

## GUIDE: Mathematics of the Discrete Fourier Transform (DFT) - Julius O. Smith III. Numerical Tools in Matlab

It appears that you are using AdBlocking software. The cost of running this website is covered by advertisements. If you like it please feel free to a small amount of money to secure the future of this website. NOTE: THIS DOCUMENT IS OBSOLETE, PLEASE CHECK THE NEW VERSION: "Mathematics of the Discrete Fourier Transform (DFT), with Audio Applications --- Second Edition", by Julius O. Smith III, W3K Publishing, 2007, ISBN 978-0-9745607-4-8. - Copyright © 2017-09-28 by Julius O. Smith III - Center for Computer Research in Music and Acoustics (CCRMA), Stanford University

<< Previous page  TOC  INDEX  Next page >>

# Numerical Tools in Matlab

In Matlab, root-finding is always numerical:2.3

```>> % polynomial = array of coefficients in Matlab
>> p = [1 0 0 0 5 7]; %  p(x) = x^5 + 5*x + 7
>> format long;       %  print double-precision
>> roots(p)           %  print out the roots of p(x)
ans =
1.30051917307206 + 1.10944723819596i
1.30051917307206 - 1.10944723819596i
-0.75504792501755 + 1.27501061923774i
-0.75504792501755 - 1.27501061923774i
-1.09094249610903```

Matlab has the following primitives for complex numbers:

```>> help j
J      Imaginary unit.
The variables i and j both initially have the value sqrt(-1)
for use in forming complex quantities.  For example, the
expressions 3+2i, 3+2i, 3+2i, 3+2j and 3+2*sqrt(-1).
all have the same value.  However, both i and j may be
assigned other values, often in FOR loops and as subscripts.
```
``````    See also I.
Built-in function.
Copyright (c) 1984-92 by The MathWorks, Inc.
``````
```>> sqrt(-1)
ans =
0 + 1.0000i
>> help real
REAL   Complex real part.
REAL(X) is the real part of X.
```
``````    See also IMAG, CONJ, ANGLE, ABS.
``````
```>> help imag
IMAG   Complex imaginary part.
IMAG(X) is the imaginary part of X.
See I or J to enter complex numbers.
```
``````    See also REAL, CONJ, ANGLE, ABS.
``````
```>> help conj
CONJ   Complex conjugate.
CONJ(X) is the complex conjugate of X.
>> help abs
ABS    Absolute value and string to numeric conversion.
ABS(X) is the absolute value of the elements of X. When
X is complex, ABS(X) is the complex modulus (magnitude) of
the elements of X.
```
``````    See also ANGLE, UNWRAP.

ABS(S), where S is a MATLAB string variable, returns the
numeric values of the ASCII characters in the string.
It does not change the internal representation, only the
way it prints.
``````
```>> help angle
ANGLE  Phase angle.
ANGLE(H) returns the phase angles, in radians, of a matrix with
complex elements.
```
``````    See also ABS, UNWRAP.</pre></p><p>Note how helpful the ''See also'' information is in Matlab.</p><p>Let's run through a few elementary manipulations of complex
``````
`numbers in Matlab:`
```>> x = 1; % Every symbol must have a value in Matlab
>> y = 2;
>> z = x + j * y
z =
1.0000 + 2.0000i
>> 1/z
ans =
0.2000 - 0.4000i
>> z^2
ans =
-3.0000 + 4.0000i
>> conj(z)
ans =
1.0000 - 2.0000i
>> z*conj(z)
ans =
5
>> abs(z)^2
ans =
5.0000
>> norm(z)^2
ans =
5.0000
>> angle(z)
ans =
1.1071```
`Now let’s do polar form:`
```>> r = abs(z)
r =
2.2361
>> theta = angle(z)
theta =
1.1071
>> r * exp(j * theta)
ans =
1.0000 + 2.0000i
>> z
z =
1.0000 + 2.0000i
>> z/abs(z)
ans =
0.4472 + 0.8944i
>> exp(j*theta)
ans =
0.4472 + 0.8944i
>> z/conj(z)
ans =
-0.6000 + 0.8000i
>> exp(2jtheta)
ans =
-0.6000 + 0.8000i
>> imag(log(z/abs(z)))
ans =
1.1071
>> theta
theta =
1.1071
>>```
`Some manipulations involving two complex numbers:`
```>> x1 = 1;
>> x2 = 2;
>> y1 = 3;
>> y2 = 4;
>> z1 = x1 + j * y1;
>> z2 = x2 + j * y2;
>> z1
z1 =
1.0000 + 3.0000i
>> z2
z2 =
2.0000 + 4.0000i
>> z1*z2
ans =
-10.0000 +10.0000i
>> z1/z2
ans =
0.7000 + 0.1000i```
```Another thing to note about Matlab is that the transpose operator '
(for vectors and matrices) conjugates as well as transposes.  Use .'
to transpose without conjugation:```
```>>x = [1:4]*j
x =
0 + 1.0000i        0 + 2.0000i        0 + 3.0000i        0 + 4.0000i
>> x'
ans =
0 - 1.0000i
0 - 2.0000i
0 - 3.0000i
0 - 4.0000i
>> x.'
ans =
0 + 1.0000i
0 + 2.0000i
0 + 3.0000i
0 + 4.0000i
>>```
`<< Previous page  TOC  INDEX  Next page >>`