2013-04-09 39 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,'-') 
相關問題