Why Does MATLAB's interp1 Function Throw an Output Argument Error?

  • Thread starter Thread starter GreenPrint
  • Start date Start date
  • Tags Tags
    Matlab
Click For Summary
SUMMARY

The MATLAB function interp1 generates an output argument error when attempting to assign multiple outputs to variables. Specifically, the error arises because interp1 returns a single output vector rather than multiple outputs. In the provided example, the correct usage is to assign the output to a single variable, such as Q, which successfully retrieves the interpolated values. This behavior is consistent across MATLAB versions, including R2011a, and is documented in the function's help comments.

PREREQUISITES
  • Understanding of MATLAB syntax and functions
  • Familiarity with linear interpolation concepts
  • Knowledge of how to handle output arguments in MATLAB
  • Basic experience with MATLAB's vector and matrix operations
NEXT STEPS
  • Review MATLAB's documentation on interp1 for detailed function behavior
  • Learn about handling multiple outputs in MATLAB functions
  • Explore the meshgrid function to understand multiple output assignments
  • Practice linear interpolation with different datasets in MATLAB
USEFUL FOR

This discussion is beneficial for MATLAB users, particularly students and researchers working with interpolation techniques, as well as developers seeking to understand function output handling in MATLAB.

GreenPrint
Messages
1,186
Reaction score
0
RESOLVED

Homework Statement


Hi,

Code:
>>v=[1;2;3;4;5;6];
P=[2494 4157;1247 2078;831 1386;623 1039;499 831;416 693];
[P_300,P_500]=interp1(v,P,5.2,'linear')

Error in ==> interp1 at 79
xOffset = 1;

? Output argument "varargout{2}" (and maybe others) not assigned during call to "C:\Program
Files\MATLAB2\R2011a\toolbox\matlab\polyfun\interp1.m>interp1".

I don't understand why I'm getting this error. I'm trying to assign the two values equal to variables. The code runs fine when I try not to assign the values to variables but I would like to assign the values to variables. I don't see what I'm doing wrong.

Code:
>> v=[1;2;3;4;5;6];
P=[2494 4157;1247 2078;831 1386;623 1039;499 831;416 693];
interp1(v,P,5.2,'linear')

ans =

  482.4000  803.4000

Thanks in advance!

Homework Equations


The Attempt at a Solution

 
Last edited:
Physics news on Phys.org
You get multiple outputs in a single vector, not [out0, out1, ...] = interp1(...)

Running the code:
Code:
v=[1;2;3;4;5;6];
P=[2494 4157;1247 2078;831 1386;623 1039;499 831;416 693];
Q = interp1(v,P,5.2,'linear')

returns:
Code:
>> Q

Q =

  482.4000  803.4000


When you are running:
Code:
>> v=[1;2;3;4;5;6];
P=[2494 4157;1247 2078;831 1386;623 1039;499 831;416 693];
interp1(v,P,5.2,'linear')

ans =

  482.4000  803.4000

The output (a vector) is stored in the variable "ans" and it is displayed since you are not using ";" to close the line.
 
That makes sense. I didn't realize functions output results into a single vector. I guess I just sort of assumed the opposite. It's something my book never informed me of. Thanks for letting me know.
 
yeah no prob.

You *can* have multiple outputs from a function. However, if you look at the comments for interp1 it only shows one output.

Contrast this to "help meshgrid" which has multiple outputs. As an example, you can call the meshgridfunction like:

[X,Y] = meshgrid(x,y) and it will return two outputs.

Note that these are all optional, and if outputs aren't specified, MATLAB throws the first output into the "ans" variable.