# rats

Rational output

## Syntax

``S = rats(X)``
``S = rats(X,strlen)``

## Description

example

````S = rats(X)` returns a character vector containing the rational approximations to the elements of `X`. Asterisks indicate elements that cannot be printed in the allotted space, but which are not negligible compared to the other elements in `X`.```

example

````S = rats(X,strlen)` specifies the length of the character vector to use for the rational approximation. For real inputs `strlength(S)` is equal to `strlen+1`, while for complex inputs it is equal to `2*strlen+3`. The rational approximation uses a tolerance that is inversely proportional to the specified length, as explained in the Algorithms section.```

## Examples

collapse all

Create a 4-by-4 matrix.

```format short X = hilb(4)```
```X = 4×4 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 ```

View the rational representation of the matrix using `rats`. The result is the same as using `format rat`.

`R = rats(X)`
```R = 4x56 char array ' 1 1/2 1/3 1/4 ' ' 1/2 1/3 1/4 1/5 ' ' 1/3 1/4 1/5 1/6 ' ' 1/4 1/5 1/6 1/7 ' ```

Find the rational representation of `pi` with the default character vector length and approximation tolerance. The result is the same as using `format rat`.

`rats(pi)`
```ans = ' 355/113 ' ```

Adjust the length of the output, which also adjusts the approximation tolerance.

`rats(pi,20)`
```ans = ' 104348/33215 ' ```

The resulting rational approximation has greater accuracy. As the output length increases, the tolerance decreases.

Adjust the output length again to achieve greater accuracy.

`rats(pi,25)`
```ans = ' 1146408/364913 ' ```

The resulting approximation agrees with `pi` to 10 decimal places.

## Input Arguments

collapse all

Input array, specified as an array of class `single` or `double`.

Data Types: `single` | `double`
Complex Number Support: Yes

Length of character vector, specified as a positive integer. The length of the character vector you specify controls how precise the rational approximation is. Larger character vectors allow for a more accurate rational approximation.

The default length of 13 produces character vectors of length `strlen+1` for real inputs and of length `2*strlen+3` for complex inputs.

## Algorithms

`rats` obtains rational approximations with ```[N,D] = rat(X,tol)```, where `tol` is `min(10^(-(strlen-1)/2)*norm(X(isfinite(X)),1),.1)`. Thus, the tolerance is inversely proportional to the output length, `strlen`.

## Version History

Introduced before R2006a