Re: [問題] 曲面內外插如何用interp2 已回收
因為你原始的資料就比較少
理論上可以找到無窮多的曲面來通過你全部的資料點
可以使用自定的函數來進行插值
以下我使用radial basis function中的Multiquadric(MQ)
可以參考維基
http://en.wikipedia.org/wiki/Radial_basis_function
其中MQ可藉由形狀函數c的調整
來改變曲面的形狀
所以你可以調整c的值
來調整插值的結果
clear;clc;format long
x=[8 10 3 5 8 4 6 1];
y=[1 1 2 2 3 4 4 6];
z=[0.99 0.62 0.98 0.88 0.98 0.64 0.73 0.76];
c=3; %形狀函數,可調整最後曲面的形狀
N=length(x);
A=zeros(N,N);
b=z';
for i=1:N
for j=1:N
r=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
A(i,j)=sqrt(r^2+c^2);
end
end
alpha=A\b; %計算係數
erc=norm(A*alpha-b) %驗證係數的誤差
[xx,yy]=meshgrid(1:10,1:10);
[m,n]=size(xx);
zz=zeros(m,n);
for i=1:N
r=sqrt((xx-x(i)).^2+(yy-y(i)).^2);
zz=zz+alpha(i)*sqrt(r.^2+c^2);
end %zz即為你要的數據
mesh(xx,yy,zz)
for i=1:N
ii=find(xx==x(i)&yy==y(i));z2(i)=zz(ii);
end
z2
erz=norm(z2-z)%驗證插值出來的數據與原數據的誤差
※ 引述《patricia27》之銘言:
: (俯看分布)
: z 1 2 3 4 5 6 7 8 9 10
: ┼┬┬┬┬┬┬┬┬┬┬┬y
: 1├ ‧(1,6)
: 2├ 想內/外插補足xi=1:10 yi=1:10 間 z的數據
: 3├ ‧(3,2)
: 4├ ‧(4,4) 試了很久的interp2, 總覺得它的x,y需要一定
: 5├ ‧(5,2)
: 6├ ‧(6,4) 的分布均勻才能使用。
: 7├(8,1)
: 8├‧ ‧(8,3) 請問我還有什麼方法可以試試
: 9├
: 10├‧(10,1) 或是 interp2哪裡使用錯誤了呢? ~"~
: ├
: x
: 苦惱了很久始終不得其解, 先謝過解惑提點的好心版友了 <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.146.175
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章