Do an interpolation in matlab
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Titus Edelhofer
am 6 Aug. 2012
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
0 Kommentare
Andrei Bobrov
am 6 Aug. 2012
Bearbeitet: Andrei Bobrov
am 6 Aug. 2012
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)];
0 Kommentare
Siehe auch
Kategorien
Mehr zu Interpolation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!