Skip to main content
Engineering LibreTexts

5.6: Functions with Multiple Outputs

  • Page ID
    84405
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Tags recommended by the template: article:topic

    By Carey A. Smith

    Matlab functions can have more than one output variable. For example, max(a) is a built-in function. It can be used as follows:

    a = [0, 2, -1, 4.2, 2.1, 0.7]

    With 1 output argument, it returns the maximum value:

    a_max = max(a)

    a_max = 4.2

    With 2 output values, it returns the maximum value and the index in a of the maximum value:

    [a_max, idx_max] = max(a)

    a_max = 4.2 % The maximum value

    idx_max = 4 % The maximum is the 4th element of a

    When 2 or more output values, they are listed in square brackets [ ] as a vector.

    Example \(\PageIndex{1}\) A function with 2 outputs that computes statistics of a vector

    function [x_mean, x_std_dev] = stats(x)

    % Compute the mean and standard deviation of vector x

    x_mean = mean(x); % mean = average

    x_std_dev = std(x); % standard deviation

    end

    The first line of the function specifies the 2 output values in square brackets, which is consistent with how it is called:

    [a_mean, a_std_dev] = stats(a)

    Test it for a = [0, 2, -1, 4.2, 2.1, 0.7]
    Note that “a” is the name of the vector in the main workspace, while "x" is the name of the local variable inside the function.

    Also, the variables inside the function are x_mean and x_std_dev, so that they are different than the names of the built-in function's variables mena() and std().

    Solution

    The outputs are:

    a_mean = 1.3333

    a_std_dev = 1.837

    .

    Exercise \(\PageIndex{1}\) sum_diff

    Write a function called sum_diff.m that has 2 inputs, x and y, and 2 outputs:.

    xy_sum (=the sum of vectors x and y)

    xy_diff (= the difference of vectors x and y).

    Write a 2nd m-file that tests your function with these vectors:

    x = -2:2:6;

    y = 1:1:5;

    The test code needs to save both outputs with code like this:

    [xy_sum, xy_diff] = sum_diff_YourName(x, y)

    Answer

    Work out the solution.

    This video provides additional information:

    .

    Exercise \(\PageIndex{2}\) Water Quality

    %% The following data is from the Camroasa Water District's 2020 Water Quality report.
    % (1pt) Define this vector of chloride levels from imported water and from wells:
    Chloride = [52 113 122 45 83 133];

    % Read the help for the max() function by typing this:
    help max

    % (2 pts) Use this form to determine both the maximum value and the index of the maximum:
    [Mx, Idx_max] = max(Chloride) % Returns the index corresponding to the maximum value

    % (1 pt) Verify that the index is correct with this line:
    Chloride(Idx_max)

    %% (3 pts) Then use a similar form to determine the minimum and the index of the minimum. Verify that the index of the minimum is correct.

    % The minimum function is min()

    Answer

    Work out the code for this exercise.

    .


    This page titled 5.6: Functions with Multiple Outputs is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Carey Smith.