2013-04-09 129 views
0

我有两个向量:Matlab:如何将几个点的向量写成连续函数?

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

你不介意重申你的问题更易于理解的方式吗?为我们提供一个你想达到的目标和一段代码来展示你迄今的努力。 – fpe 2013-04-09 07:53:34

+3

您似乎完全不了解“函数”的数学概念。 ***三点不确定曲线***(特别是当没有'点'时,但只有一些1-D'x'-数据)。事实上,三点决定了一个*无限*连续函数的数量。我们非常乐于帮助您,但请您重申您的问题,以便1)确实有意义,2)我们清楚您想完成什么。 – 2013-04-09 08:04:17

+0

@RodyOldenhuis:为你+1! – fpe 2013-04-09 08:10:54

回答

3

OK,你最新的修改提高的情况很多。

但是,你仍然不充分划定问题。

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 

什么我问的是:什么样的模式最能描述你的信号时,采样时间会减少到infinitemal值?

+0

谢谢,这是我需要的。我将f函数加入[y] = dsolve('Dy =(y * 2)-f',inits);然后执行此操作:yy = eval(vectorize(y)); “使用==>的eval 未定义的函数或方法‘rdivide’的类型‘function_handle’的输入参数???错误。”:并得到一个错误 也许你知道为什么吗? – 2013-04-09 22:21:30

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,'-') 
相关问题