有没有办法在附图中使用matlab找到两个X值之间的Y值?例如,如果dx = 0.1,X = [0 5 10 12 13 14]且Y = [1 2 3 1 2.8 2],Y相对于该dx的新值是多少?
请建议。
此致 姆兰
答案 0 :(得分:3)
可以使用interp1
函数解决此问题,但当然不能使用选项linear
。 interp1
有三个最近邻选项:
nearest
最近邻居next
下一个更高的邻居previous
下一个较低的邻居因此,使用previous
选项,您可以使用interp1
并获得所需的行为。为了比较,我添加了插值和楼梯图的图。您将看到插值版本没有无限斜率,因为步骤发生在dx=0.1
上。
X = [0 5 10 12 13 14];
Y = [1 2 3 1 2.8 2];
dx = 0.1;
xi = min(X):dx:max(X);
yi = interp1(X,Y,xi,'previous');
[xs,ys] = stairs(X,Y);
plot(xi,yi,'-b',xs,ys,'-r');
(红色:原始楼梯图,蓝色:插补版)
答案 1 :(得分:0)
我发现以下解决方案有效。
x = [0 5 10 12 13 14];
y = [1 2 3 1 2.8 2];
dx = 0.1;
last_index = 1;
xi = [ min(x) : dx : max(x) ];
for j = 1:1:length(xi)
while (x(last_index) < max(x)) && ( xi(j) >= x(last_index + 1))
last_index = last_index +1 ;
end
yi(j) = y(last_index);
end
[Xs, Ys] = stairs(xi, yi, 'ko-');
plot(Xs, Ys, 'r-')
hold on
plot(xi, yi, 'k-')