The `residue` function in MATLAB is used to compute the partial fraction expansion of a rational function, returning the residues, poles, and direct terms of the input transfer function.
Here's a code snippet demonstrating how to use `residue`:
[num, den] = ss2tf(A, B, C, D); % Convert state-space to transfer function
[r, p, k] = residue(num, den); % Compute residues, poles, and direct terms
Understanding Residue in MATLAB
What is Residue?
The residue in the context of linear algebra and signal processing is a concept that refers to the values that characterize the behavior of a system near its poles. These residues play a critical role in the analysis of transfer functions, particularly when examining system stability and control. In essence, residues represent the contribution of each pole to the overall output of a function, thereby influencing its response significantly.
Practical Applications of Residue
Residues have numerous applications in various fields, including but not limited to:
- Signal Processing: Residues help analyze the characteristics of filters and design circuits.
- Control Systems: They are essential in assessing system stability and behavior over time.
- Filter Design: Residues aid in developing both Finite Impulse Response (FIR) and Infinite Impulse Response (IIR) filters, impacting how signals are processed.

The Residue Command in MATLAB
Syntax of the Residue Function
The `residue` function in MATLAB is straightforward to use, with a syntax structure designed to facilitate easy computation of residues from the transfer function of a system. The general form of the command is:
[r,p,k] = residue(num, den)
In this command:
- num refers to the numerator coefficients of the transfer function.
- den indicates the denominator coefficients.
- The output consists of:
- r: an array containing the residues.
- p: an array of the poles.
- k: the direct transmission coefficients.
How to Implement the Residue Function
Using the `residue` command is simple. Here is a step-by-step guide with a practical example:
Example 1: Basic Residue Calculation
Consider a transfer function with the following coefficients:
- Numerator: \( s^1 + 3 \) (represented as `[1, 3]`)
- Denominator: \( s^2 + 5s + 6 \) (represented as `[1, 5, 6]`)
You can compute the residues as follows:
num = [1, 3];
den = [1, 5, 6];
[r,p,k] = residue(num, den);
disp(r);
disp(p);
disp(k);
Explanation:
- After executing the above code, `r`, `p`, and `k` will hold the computed residues, poles, and direct transmission coefficients, respectively. Understanding this output is fundamental to grasping how individual poles affect the system's dynamic response.

Theoretical Background on Residues
Poles and Zeros Concept
In control theory, poles and zeros are crucial for determining a system's behavior:
- Poles are the values of `s` that make the denominator of the transfer function equal to zero, leading to system outputs that blow up to infinity.
- Zeros, conversely, are values that make the numerator zero, leading to a zero output at that specific frequency.
Residues are intricately linked to poles; they determine how much each pole contributes to the overall output and, notably, its stability. A system’s stability can be significantly influenced by the locations and magnitudes of its residues.
Residues in Complex Analysis
Residues have a broader application in complex analysis, particularly in the evaluation of contour integrals. When dealing with complex functions, residues can be harnessed to compute integrals according to the residue theorem, which states that under certain conditions, the value of an integral can be derived from the residues of the poles enclosed in a given contour.

Applications of Residue Analysis
Control Systems
In control systems, residues are used for evaluating stability. By analyzing the residues associated with the poles of a system's transfer function, engineers can predict whether the system will settle into a stable state or oscillate indefinitely.
Example: Stability Evaluation
Consider a simple system where the coefficients are given by:
[num, den] = deal([1], [1, 2, 1]);
[r, p] = residue(num, den);
% Interpret the pole locations
Understanding the location of the poles present in `p` enables one to evaluate whether the system is stable. If all poles have negative real parts, the system is deemed stable; if any have positive real parts, it becomes unstable.
Signal Processing
Residues also play a fundamental role in signal processing. They can be employed in designing filters, which are critical for manipulating and improving the quality of signals recorded from various sources.
Example: Filter Design
The calculation of residues can assist in both FIR and IIR filter designs by ensuring that the poles and zeros are positioned optimally for desired frequency responses, enhancing system performance.

Advanced Usage of Residues in MATLAB
The Role of Parameterization in Residue Calculation
Different MATLAB toolboxes contain functionalities that extend the basic `residue` command, allowing for intricate computations involving residues, especially in complex systems. Familiarity with these additional functions can lead to more robust and efficient analyses.
Multiple Residues Handling
In many engineering systems, one can encounter multiple residues, especially in resonant circuits or complex filter designs. Handling these multiple residues is essential for accurate modeling and prediction.
Example: Coupled Systems
For a coupled system where the transfer function is complex, one can implement:
num = [1, 0];
den = [1, 2, 1];
[r, p, k] = residue(num, den);
disp(array2table([r', p', k'], 'VariableNames', {'Residue', 'Pole', 'DirectTerm'}));
This command gives a clearer view of how each residue correlates with its corresponding pole and direct term, facilitating an understanding of the overall system response.

Troubleshooting Common Issues with the Residue Function
Common Errors and Solutions
When utilizing the residue command, users may encounter various errors linked to array dimensions or coefficients. Always ensure that the lengths of numerator and denominator arrays align with the expectations of the function. If errors arise, recheck the provided coefficients for correctness.
Optimizing Performance
For large systems, leveraging matrix operations or optimizing the input coefficients can significantly improve performance. Efficient programming practices can make residue calculations faster and more reliable.

Conclusion
Recap of Key Concepts
Residues in MATLAB are an essential aspect of analyzing the behavior of systems across various fields such as control systems and signal processing. Understanding the `residue` command is crucial for engineering professionals.
Final Thoughts
Mastering residue calculations using MATLAB is vital for anyone working within the realms of engineering and applied mathematics. The ability to compute and interpret residues can lead to more informed decisions, enhanced system designs, and improved overall stability and performance.

Additional Resources
Recommended Reading
For those interested in delving deeper, consider exploring specialized textbooks on MATLAB and system dynamics, as well as taking online courses focused on control systems and signal processing fundamentals.
Online Tools and Forums
Engage with MATLAB Central and other online forums where practitioners share insights and troubleshoot common issues, providing a community-supported learning environment.