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

  • Thread starter Thread starter GreenPrint
  • Start date Start date
  • Tags Tags
    Matlab
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 5K views
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.