如何在matlab中得到两个阶梯之间的值?

时间:2015-02-16 02:09:37

标签: matlab

有没有办法在附图中使用matlab找到两个X值之间的Y值?例如,如果dx = 0.1,X = [0 5 10 12 13 14]且Y = [1 2 3 1 2.8 2],Y相对于该dx的新值是多少?

请建议。

此致 姆兰

stair plot

2 个答案:

答案 0 :(得分:3)

可以使用interp1函数解决此问题,但当然不能使用选项linearinterp1有三个最近邻选项:

  • 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');

Stairs plot

(红色:原始楼梯图,蓝色:插补版)

答案 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-')

enter image description here