Interp1 - The grid vectors must contain unique points
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a text file that has been plotted and I need to find the x value from a known y value. However there isn't a data point at this point so I have interpolated. This has worked for some txt files but not others.
ymax = max(y);
xmax = find(y == ymax);
xmax = x(xmax);
yhalfmax = max(y)/2;
xhalfmax = interp1(y, x, yhalfmax, 'spline'); %interpolate to generate a point at the yhalfmax point
Error: Error using gridded Interpolant. The grid vectors must contain unique points.
I have tried using 'unique' but this has changed the plotting so can't be used.
2 comentarios
Matt J
el 6 de Nov. de 2017
I have tried using 'unique' but this has changed the plotting so can't be used.
How can it "change the plotting", if all you've done is throw away duplicate points?
Respuestas (1)
Star Strider
el 6 de Nov. de 2017
My usual approach to the problem of non-unique independent variable values for interp1 is to add a very small, increasing value to each element.
Example —
XData = sort(randi(9, 1, 10)) % Create Data
XDataUnique = XData + linspace(0, 1, length(XData))*1E-3 % Add Increments To Each Element
I used ‘1E-3’ here to illustrate the idea. In practice, I use a much smaller multiplier, ‘1E-10’ or so.
4 comentarios
Star Strider
el 6 de Nov. de 2017
Looking at your code, it seems that you need to use it to create your ‘y’ data to do your interpolation, not your ‘x’ data.
Try this:
y = sort(randi(9, 1, 10)) % Create Data
YDataUnique = y + linspace(0, 1, length(y))*1E-3 % Add Increments To Each Element
I honestly have no idea what is causing the index error. The vector size should not change with my code.
Ver también
Categorías
Más información sobre Interpolation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!