Interpolation doesn't reproduce the character of original curve

1 回表示 (過去 30 日間)
AR
AR 2021 年 12 月 10 日
コメント済み: Matt J 2021 年 12 月 10 日
Using the Matlab function notation for interp1: x, v, xq, and vq {vq = interp1(x, v, xq, 'method')}, I am trying to create a 1-d vector vq as a function of 1-d vector xq to recreate the shape of the curve v(x). I am trying to attach images that show the x & xq on one plot, and v & the resultant vq on another plot.
I have tried various 'methods', and none reproduces the original character of the curve v(x). I don't understand why and what I need to do (other than laborious self-computation) to get there. Appreciate pointers.
  3 件のコメント
John D'Errico
John D'Errico 2021 年 12 月 10 日
EXACTLY. Without your data, we cannot help you that much. A picture of your data might be interesting, but it does not tell us enough. Attach a .mat file to a comment, or to your original question by editting the question.
I will note that since xq is NOT monotonic, then I would expect vq to also not be monotonic.
Matt J
Matt J 2021 年 12 月 10 日
Data posted by AR.

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

採用された回答

Matt J
Matt J 2021 年 12 月 10 日
編集済み: Matt J 2021 年 12 月 10 日
Perhaps I misunderstood how this works. I expected v to be scaled (compressed as it were in this case) and be reproduced over the new range xq
The vector v is just a list of values. It doesn't have a unique domain x. If the goal is to compress the plot, you just need to redefine v's domain. It doesn't require interpolation,e.g.,
x=linspace(0,2*pi,100);
v=sin(x);
xc=linspace(0,pi,100);
plot(x,v,xc,v,'x'); legend('Original','Compressed')
  5 件のコメント
Matt J
Matt J 2021 年 12 月 10 日
Easier to do,
xq=linspace(min(xq), max(xq), numel(v));
plot(x,v,xq,v,'x')
AR
AR 2021 年 12 月 10 日
This may be workable, but here we are coming up with a new xq and keeping v. In my case, I don't think I can change xq. I would need to keep xq and come up with a new v. Anyway, we have a workable solution one way or another.

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

その他の回答 (1 件)

Matt J
Matt J 2021 年 12 月 10 日
編集済み: Matt J 2021 年 12 月 10 日
I don't know how you are plotting, but it should look like this:
plot(x,v,xq,vq,'x--')
  7 件のコメント
AR
AR 2021 年 12 月 10 日
I would appreciate understanding what it does when the span of xq > the span of x. How does table lookup work here?
Matt J
Matt J 2021 年 12 月 10 日
interp1 will need to extrapolate outside the range of x. It will do that according to the extrapolation settings that you give to interp1:

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

カテゴリ

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