フィルターのクリア

Interpolating a function that is constant over some parts of its domain?

5 ビュー (過去 30 日間)
I'm trying to write code that will linearly interpolate samples from a generic real-valued function. Interp1 seems to break if the function is constant over any part of its domain, and unfortunately for me this is an extremely common use case - as a simple function:
{0, if x<0
f(x) = {x, if 0<=x<=1
{1, otherwise
It seems like interp1([0, 0, 1, 1], [-10,0,1,10], x) ought to return this function (for x \in [-10,10]), but instead I get the error that "The grid vectors must contain unique points."
Is there another interpolation function that doesn't break when you feed it functions that are sometimes constant?
  1 件のコメント
Stephen23
Stephen23 2017 年 6 月 12 日
The interp1 help page shows the syntax:
vq = interp1(x,v,xq)
where x is the independent variable. You have the x and v swapped around.

サインインしてコメントする。

採用された回答

David Goodmanson
David Goodmanson 2017 年 6 月 12 日
編集済み: David Goodmanson 2017 年 6 月 12 日
Hi Jonathan,
just swap inputs,
interp1([-10,0,1,10], [0,0,1,1], x)

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by