Matlab:如何将几个点的向量写为连续函数?

时间:2013-04-09 07:51:00

标签: matlab function vector

我有两个向量:

x = [0; 1; 2]
y = [2.0000; 0; -14.7781]

如果我将绘制x和y,我会在xy - 平面上看到三个点。但我希望将这三点联系起来,并将它们作为一个连续的函数:

y = f(x),
y(0) = 2;
y(1) = 0;
y(2) = -14.7781;
y(0.5) = value between 2 and 0.

例如,y可被视为ZOH(零级保持)连续信号。

我看到MATLAB有一个名为d2c的函数,它将模型从离散时间转换为连续时间。但不知道如何将它与我已经拥有的矢量联系起来。怎么做 这与MATLAB?

2 个答案:

答案 0 :(得分:3)

好的,您的最新编辑可以改善情况。

但是,您仍然没有充分划分问题。

ZOH就像

一样简单
    >> x = [0; 1; 2];
    >> y = [2.0000; 0; -14.7781];
    >> f = @(new_x) y(find(x <= new_x, 1, 'last'));
    >> f(0.5)

    ans =
        2

但是,这不是我认为你的意思,因为问题的y(0.5) = value between 2 and 0部分表明了这一点。

也许你想要一个线性插值:

>> f = @(new_x) interp1(x,y, new_x);
>> f(0.5)

ans = 
    1

或三次样条插值:

>> f = @(new_x) interp1(x,y, new_x, 'spline');
>> f(0.5)

ans =    
    2.5973

我要问的是:当样本时间减少到无穷小的值时,哪种模型最能描述您的信号?

答案 1 :(得分:1)

n次多项式最多可以有n-1个转折点。因此,我们可以进行多项式回归:

% Input data
yy = [2.0000; 0; -14.7781];

% Parameters
n = length(yy)-1;
x = (0:1:n).';

% Regression
p = polyfit(x,yy,n);

% Plot
f = polyval(p,x);
figure
plot(x,yy,'o',x,f,'-')