Do an interpolation in matlab
이전 댓글 표시
Hi,
I'm newbie in Matlab and I'm trying to do an interpolation but it doesn't work ("The values of X should be distinct.") I don't know exactly what's wrong.
load doc_1.txt
x= doc_1(:,2);
y= doc_2(:,3);
z= 399.25:1:2179.5;
yi= interp1(x,y,z);
plot(x,y,'o',z,yi)
Thanks in advance,
댓글 수: 4
Oleg Komarov
2012년 7월 30일
I assume "The values of X should be distinct" is an error. As it says, your x values should all be different.
klipya
2012년 7월 30일
편집: Andrei Bobrov
2012년 7월 30일
Andrei Bobrov
2012년 7월 30일
interp1(X,Y,352,'linear','extrap')
klipya
2012년 8월 6일
답변 (2개)
Titus Edelhofer
2012년 8월 6일
Hi,
you will need to average all values between 352 and 353. To this end use histc to find those effiently and then loop. Here ist the code (only for interval [352 - 353]), the more general should then be not too difficult:
x = [351 351.5 352.2 352.3 353.5 354.5];
y = rand(size(x));
edges = 350:355;
[n,bin] = histc(x, edges);
% for the 352 average on all values between 352 and 354
x352 = x(bin==3)
% x352 is just for illustration, what you need is y352:
y352 = mean(y(bin==3))
Titus
Andrei Bobrov
2012년 8월 6일
편집: Andrei Bobrov
2012년 8월 6일
variant
X = [352.4, 352.5 354.3;0.5050,2.4874,1]';
[xa,~,c]=unique(fix(X(:,1)));
Xout = [xa,accumarray(c,X(:,2),[],@mean)];
카테고리
도움말 센터 및 File Exchange에서 Interpolation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!