About interp1 function
5 次查看(过去 30 天)
显示 更早的评论
Hi,
i have a data set like shown in figure1,
I try to create a new interpolate data between each sequential two data points with interp1 (one point for each sequential two data points) and the result are given in figure 2. Although i have 100 data the interpolated data are 57. It have to be 99.
It is obviously shown from figure 2 that it did not calculate interpolate data for sequential two data points. Especially sides do not have any interpolated data. What will be the solution
Thank you..
Vxi = min(Vx):0.1:max(Vx);
Vyi = interp1(Vx,Vy,Vxi, 'nearest');
plot(Vxi,Vyi, 'o')
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/230868/image.jpeg)
FIGURE 1
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/230869/image.jpeg)
FIGURE 2
7 个评论
Jan
2019-7-24
You can simplify
for i=1:100
t(i)=i
end
t=t';
to the loop-free:
t = (1:100).';
I do not understand the diagram or explanations given here: https://www.mathworks.com/matlabcentral/answers/472922-about-interp1-function#comment_727635
Maybe it is worth to mention, that the data used to draw the diagram in the original question seem to be a 1D line. I assume they are ordered according to their X values, and not according to the outer shape, which is nearly a rectangle.
Without the input files I cannot run your code. So I still do not know, what your inputs are and what you want as output.
回答(1 个)
Roshni Garnayak
2019-8-5
The interp1 function performs 1D interpolation and computes one y-value for the corresponding x-value. Due to this only one point is computed in the x : x+0.1 range even when a number of data points are clustered in that range.
A possible solution is to use variable interval size for Vxi. The intervals where more data points are located can be assigned smaller interval size and the intervals with lesser number of points can be allotted larger interval size.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!