# plotting X and Y coordinates over time

6 ビュー (過去 30 日間)
sahar daraei 2022 年 7 月 31 日

Hi, I have a data containing X and Y coordinates which I'd like to plot them over fixed time intervals. I tried to use linear interpolation but it doesn't work. Can anyone help me with this please.
Xp = [1:0.25:50693];
yp =interp1(X,Y,Xp,'linear');
figure
plot(X,Y,'o');
hold on
plot(Xp,yp,'r-');
xlabel('X');
ylabel('Y');
title('X and Y positions')
grid on
##### 3 件のコメント表示非表示 2 件の古いコメント
Dyuman Joshi 2022 年 7 月 31 日
Are there any repeating values in your data? That causes the error
X=[1 1 2 3 4 5 5]; %repeating values
Y=[2 3 4 5 6 7 8];
%you can check with repeating values in Y as well, it will give the same error
Xp=1:0.25:2.5;
Yp =interp1(X,Y,Xp,'linear')
Error using matlab.internal.math.interp1
Sample points must be unique.

Error in interp1 (line 188)
VqLite = matlab.internal.math.interp1(X,V,method,method,Xqcol);

サインインしてコメントする。

### 回答 (1 件)

Star Strider 2022 年 7 月 31 日

The data were not supplied, however it quite probably works correctly. You are asking it to do a linear interpolation, probably to a finer ‘x’ resolution, and it does exactly that.
The plots would appear to be the same because the method chosen is 'linear'. If you chose a different interpolation method, the plots might appear to be different.
EDIT — (31 Jul 2022 at 17:30)
To make the sample points unique:
X = sort(randi(50,100,1))
X = 100×1
1 1 3 3 4 4 4 4 5 5
Y = randi(90, 100, 1)
Y = 100×1
81 84 32 46 61 9 42 78 32 81
[Ux,i1] = unique(X)
Ux = 43×1
1 3 4 5 6 7 8 9 10 11
i1 = 43×1
1 3 5 9 12 14 15 16 18 19
X = Ux;
Y = Y(i1);
Xp = [1:0.25:50693];
yp =interp1(X,Y,Xp,'linear');
figure
plot(X,Y,'o');
hold on
plot(Xp,yp,'r-');
xlabel('X');
ylabel('Y');
title('X and Y positions')
grid on It would help to have the actual data, however this illustrates the concept.
.

サインインしてコメントする。

R2022a

### Community Treasure Hunt

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

Start Hunting!