Interpolating through spline and then get corresponding values
2 ビュー (過去 30 日間)
古いコメントを表示
Hello, I have a certain set of points which create a curve. I want to evaluate what is the y value at other x locations, not given in the problem.
Unfortunately, there is no polynomial which can passes though all these points correctly.
I am sure other people might have asked this question, but I could not find anything.
The X values are:
if true
% code
x=[0
0.00420000000000000
0.00800000000000000
0.0125000000000000
0.0177000000000000
0.0236000000000000
0.0305000000000000
0.0385000000000000
0.0476000000000000
0.0581000000000000
0.0701000000000000
0.0838000000000000
0.0993000000000000
0.116700000000000
0.136300000000000
0.158200000000000
0.182500000000000
0.209200000000000
0.238400000000000
0.269800000000000
0.303600000000000
0.339300000000000
0.376800000000000
0.415600000000000
0.455300000000000
0.495400000000000
0.535600000000000
0.575100000000000
0.613700000000000
0.650900000000000
0.686200000000000
0.719500000000000
0.750500000000000
0.779200000000000
0.805400000000000
0.829200000000000
0.850600000000000
0.869800000000000
0.886900000000000
0.902000000000000
0.915300000000000
0.927000000000000
0.937200000000000
0.946100000000000
0.953900000000000
0.960600000000000
0.965400000000000
0.970400000000000
0.975400000000000
0.980200000000000
0.985200000000000
0.990200000000000
0.995100000000000
1];
end
The y values are:
if true
% code
y=[0.127489040000000
0.111766040000000
0.0167797700000000
0.0337462690000000
0.0266396250000000
0.111117580000000
0.130855270000000
0.138929860000000
0.163963910000000
0.134142850000000
0.150978780000000
0.151461170000000
0.142033560000000
0.143054720000000
0.142033560000000
0.139969710000000
0.139452300000000
0.138929860000000
0.137879260000000
0.141520320000000
0.143562680000000
0.146571800000000
0.159900150000000
0.167058910000000
0.178109250000000
0.196599630000000
0.216707350000000
0.225149480000000
0.251330640000000
0.286469960000000
0.304243410000000
0.330819300000000
0.359129760000000
0.389805860000000
0.429068680000000
0.448364490000000
0.485802150000000
0.531624250000000
0.547334130000000
0.565165850000000
0.582247920000000
0.598792800000000
0.619664680000000
0.639333560000000
0.638537430000000
0.668565600000000
0.713292490000000
0.687499690000000
0.660858750000000
0.633757700000000
0.628645890000000
0.672958870000000
0.660858750000000
0.623358350000000];
end
And the values where I want to evaluate are:
if true
% code
xnew=[0.0250000000000000
0.0500000000000000
0.0750000000000000
0.100000000000000
0.150000000000000
0.200000000000000
0.300000000000000
0.400000000000000
0.500000000000000
0.600000000000000
0.700000000000000
0.800000000000000
0.900000000000000
0.950000000000000];
end
The way I would do is by linear interpolation through the different points and then get for each interval the coefficients of the polynomial and input my data and check if they are within certain limits and use poleval. I think this way is a bit long, and it might be possible to fit a spline or other manners.
Thanks a lot for any suggestions.
Antonio
0 件のコメント
採用された回答
Azzi Abdelmalek
2012 年 9 月 12 日
編集済み: Azzi Abdelmalek
2012 年 9 月 12 日
method='linear'
ynew=interp1(x,y,xnew,method)
%or
method='smoothingspline'
f=fit(x,y,method);
ynew=f(xnew)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Spline Postprocessing についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!