matlab中的csape怎麼使用

2021-12-19 20:56:02 字數 4743 閱讀 6324

1樓:匿名使用者

function pp = csape(x,y,conds,valconds)

%pp=csape(x,y,'變界型別','邊界值'),生成各種邊界條件的三次樣條插值. 其中,(x,y)為資料向量

%邊界型別可為:'complete',給定邊界一階導數.

% 'not-a-knot',非扭結條件,不用給邊界值.

% 'periodic',週期性邊界條件,不用給邊界值.

% 'second',給定邊界二階導數.

% 'variational',自然樣條(邊界二階導數為0)

% .%例 考慮資料

% x | 1 2 4 5

% ---|-------------

% y | 1 3 4 2

%邊界條件s''(1)=2.5,s''(5)=-3,

% x=[1 2 4 5];y=[1 3 4 2];

% pp=csape(x,y,'second',[2.5,-3]);pp.coefs

% xi=1:0.1:5;yi=ppval(pp,xi);

% plot(x,y,'o',xi,yi);

pp0 = csape(x,[1,zeros(1,length(y)),0],[1,0]);

pp = csape( x, [1 sin(x) 0], [1 2] ) %左邊的點一階導數為1,右邊的點二階導數為0

splinetool是一個圖形化的插值工具

lagrange插值,由於lagrange插值可能不收斂,所以工程中很少有人用這種插值。matlab中沒有專門的lagrange插值函式。但我們可以自己編一個,如下:

%lagrange插值子函式

function y=lagrange(x0,y0,x)

n=length(x0); m=length(x);

for i=1:m

z=x(i);

s=0.0;

for k=1:n

p=1.0;

for j=1:n

if j~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

endend

s=p*y0(k)+s;

endy(i)=s;end

2樓:肉_夾饃

doc csape

或者help csape

matlab的幫助文件時最權威的工具書。

另:網上搜到的,希望對你有所幫助。

function pp = csape(x,y,conds,valconds)

%pp=csape(x,y,'變界型別','邊界值'),生成各種邊界條件的三次樣條插值. 其中,(x,y)為資料向量

%邊界型別可為:'complete',給定邊界一階導數.

% 'not-a-knot',非扭結條件,不用給邊界值.

% 'periodic',週期性邊界條件,不用給邊界值.

% 'second',給定邊界二階導數.

% 'variational',自然樣條(邊界二階導數為0)% .%例 考慮資料

% x | 1 2 4 5

% ---|-------------

% y | 1 3 4 2

%邊界條件s''(1)=2.5,s''(5)=-3,% x=[1 2 4 5];y=[1 3 4 2];

% pp=csape(x,y,'second',[2.5,-3]);pp.coefs

% xi=1:0.1:5;yi=ppval(pp,xi);

% plot(x,y,'o',xi,yi);

matlab中的csape怎麼使用?

3樓:匿名使用者

function pp = csape(x,y,conds,valconds)

%pp=csape(x,y,'變界型別','邊界值'),生成各種邊界條件的三次樣條插值. 其中,(x,y)為資料向量

%邊界型別可為:'complete',給定邊界一階導數.

% 'not-a-knot',非扭結條件,不用給邊界值.

% 'periodic',週期性邊界條件,不用給邊界值.

% 'second',給定邊界二階導數.

% 'variational',自然樣條(邊界二階導數為0)

% .%例 考慮資料

% x | 1 2 4 5

% ---|-------------

% y | 1 3 4 2

%邊界條件s''(1)=2.5,s''(5)=-3,

% x=[1 2 4 5];y=[1 3 4 2];

% pp=csape(x,y,'second',[2.5,-3]);pp.coefs

% xi=1:0.1:5;yi=ppval(pp,xi);

% plot(x,y,'o',xi,yi);

pp0 = csape(x,[1,zeros(1,length(y)),0],[1,0]);

pp = csape( x, [1 sin(x) 0], [1 2] ) %左邊的點一階導數為1,右邊的點二階導數為0

splinetool是一個圖形化的插值工具

lagrange插值,由於lagrange插值可能不收斂,所以工程中很少有人用這種插值。matlab中沒有專門的lagrange插值函式。但我們可以自己編一個,如下:

%lagrange插值子函式

function y=lagrange(x0,y0,x)

n=length(x0); m=length(x);

for i=1:m

z=x(i);

s=0.0;

for k=1:n

p=1.0;

for j=1:n

if j~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

endend

s=p*y0(k)+s;

endy(i)=s;end

matlab 關於pp

4樓:我行我素

pp就是分段多項式,語句形如:

breaks = -5:-1;

coefs = -22:-11;

pp = ppmak(breaks,coefs)其中:breaks就是各段的端點值,-5,-4,-3,-2,-1,有4個區間

coefs就是每段多項式的係數,共有12個值,12/4=3,則有4個多項式,每個多項式的最高次數是3

matlab中ppval什麼意思

5樓:匿名使用者

除了ppval函式,來再友情贈送一個csape函式% pp = csape(x,y,conds) 返回源給定資料(x,y)的三次樣條插值

% 其中conds為條件引數,主要有以下的選項% ——variational(自然邊界條件,首末點二階導數均為0),

% ——second(指定首末點的二階導數),% ——periodic(週期性邊界條件,首末點的0~2階導數相等),

% ——complete(給定導數情況,預設)% ppval函式: 給出三次樣條插值pp在x處對應的函式值。

% 例程如下:

x=0:0.1:pi;

y=sin(x);

pp = csaps(x,y)

ppval(pp,0.4)

sin(0.4)

interp1在matlab中怎麼用

6樓:匿名使用者

matlab中的插值函式為interp1,其呼叫格式為: yi= interp1(x,y,xi,'method')

其中x,y為插值點,yi為在被插值點xi處的插值結果;x,y為向量, 'method'表示採用的插值方法,matlab提供的插值方法有幾種: 'method'是最鄰近插值, 'linear'線性插值; 'spline'三次樣條插值; 'cubic'立方插值.預設時表示線性插值

注意:所有的插值方法都要求x是單調的,並且xi不能夠超過x的範圍。

例如:在一 天24小時內,從零點開始每間隔2小時測得的環境溫度資料分別為

12,9,9,1,0,18 ,24,28,27,25,20,18,15,13,

推測中午12點(即13點)時的溫度.

x=0:2:24;

y=[12 9 9 10 18 24 28 27 25 20 18 15 13];

a=13;

y1=interp1(x,y,a,'spline')

結果為: 27.8725

若要得到一天24小時的溫度曲線,則:

xi=0:1/3600:24;

yi=interp1(x,y,xi, 'spline');

plot(x,y,'o' ,xi,yi)

轉的 有問題追問

7樓:**李亞

假設 x= 1 2 3;

y= 2 4 6;

x1= 0.5 1 1.5 2 2.5 3;

那麼求y1 對應的量,就是

y1=interp1(x,y,x1);

預設的是線性插值。

matlab隨機函式怎麼取,matlab中怎樣隨機從一組資料中取一個數

如果是要要均勻分佈,可以使用語句rand 1 0.8 0.1 matlab中的rand函式 用於產生隨機數 均勻分佈的隨機數或矩陣 語法y rand n y rand m,n y rand m n y rand m,n,p,y rand m n p.y rand size a rand s rand...

matlab中離散楔的原理,matlab中離散小波的原理

我感覺matlab離散的原理好像和書中的那些原理沒半毛錢關係?笑翻了,哇咔咔,你才發現啊?這是小波參考書的通病,也是容易讓人抓狂的難點,就是小波理論的示意性理解與實際實現演算法總是被混為一談,實際這兩者有時真的沒半毛錢關係都沒有,完全是兩個領域的問題。在matlab中cwt理論的理解是用你上面的第一...

matlab的function中怎麼定義迭代函式

limit函式?那是用來算函式極限的,而且是屬於符號計算工具箱,你這是數列極限,不能用。如果非得用,就自己寫出通項公式,這樣可以做成函式極限的樣子。如果真想用matlab特色的數值解法,就得做for迴圈。而且不是1 inf,無窮根本就不能達到啊。p1 0.8 自己取初值 p2 p1 for k 1 ...