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 Kommentare

Oleg Komarov
Oleg Komarov am 30 Jul. 2012
I assume "The values of X should be distinct" is an error. As it says, your x values should all be different.
klipya
klipya am 30 Jul. 2012
Bearbeitet: Andrei Bobrov am 30 Jul. 2012
Thanks Oleg, I will apply some function to erase them or I will erase it directly. One other question. I have different values like:
X Y
352.4 0.5050
352.5 2.4874
Is there any possibility to get only one value for 352, for example? Thanks a lot!
interp1(X,Y,352,'linear','extrap')
klipya
klipya am 6 Aug. 2012
Thanks Andrei. Interpolation works well, thank you. It's not that what I want. I have a lot of values like 352.4, 352.5 354.3... and I want to get, with the interpolation, only one value from every number. Is that possible?
For example, for the value 352 I want to get one number.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Titus Edelhofer
Titus Edelhofer am 6 Aug. 2012

0 Stimmen

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
Andrei Bobrov am 6 Aug. 2012
Bearbeitet: Andrei Bobrov am 6 Aug. 2012

0 Stimmen

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)];

Kategorien

Mehr zu Interpolation finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 30 Jul. 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by