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

  • Thread starter Thread starter GreenPrint
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion addresses an error encountered when using MATLAB's interp1 function, specifically related to output arguments. The user attempted to assign two outputs from interp1 to variables but received an error indicating that not all output arguments were assigned. It was clarified that interp1 only returns a single output vector, which is why the assignment failed. When the function is called without variable assignment, the result is stored in the default "ans" variable. Understanding that interp1 provides a single output helps resolve the confusion regarding multiple outputs in MATLAB functions.
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.
 
Back
Top