簡體   English   中英

2d多項式擬合表數據MATLAB

[英]2d polynomial fitting to table data MATLAB

我正在嘗試使用2D多項式擬合來處理我的表數據,我的數據格式與下面的鏈接完全相同: http//www.mathworks.de/help/toolbox/curvefit/brx2ldg-1.html#bso46rp-1

我的意思是我有長度為n向量X ,長度為m Ym*n矩陣Z ,我想將5度2d多項式擬合到我的數據中,

我想知道MATLAB中有沒有解決這個問題的語法? 比如IDL中的SFIT命令, http: //star.pst.qub.ac.uk/idl/SFIT.html

我有cftoolsftool ,但似乎它們不能用於此目的,或者很可能我不知道如何使用它們。

我知道人們在MATLAB Mathworks文件交換中有一些m.file,如果你知道一個正常工作,請告訴我。

我很感激任何幫助和評論。

您可以在文件交換中使用polyfitn並重新格式化數據,以便擁有3個MxN x,y,z向量。

示例

假設您有表格的表格數據

N = 100; M = 80;
x = linspace(0, 1, M);
y = linspace(0, 1, N).';
z = bsxfun(@franke, x, y);

為x創建meshgrid ,而改為y

N = 100; M = 80;
[x, y] = meshgrid(0:1:N, 0:1:M);
z = bsxfun(@franke, x, y);

(請注意, unique(x)unique(y)將為您提供表行和列的原始linspace值。)

使用polyfitn得到5次多項式系數

p = polyfitn([x(:),y(:)], z(:), 5);

您還可以將結果轉換為符號形式,以使用提供的polyn2sym(p)查看多項式

>> pretty(polyn2sym(p))

                      5                           4                             4                         3   2
     90264379051097 X1         2537627280433653 X1  X2       7778045812403061 X1       6982058230382053 X1  X2
- ------------------------- - -------------------------- + ------------------------ - -------------------------- + ...
  2417851639229258349412352   38685626227668133590597632   604462909807314587353088   77371252455336267181195264

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM