⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtl.m

📁 这个是matlab经典教程的一个关于差值的源代码
💻 M
字号:
function fz = DTL(x,y,Z,x0,y0)
syms s t;
f = 0.0;
n = length(x);
m = length(y);

for i=1:n
    if(x(i)<=x0)&& (x(i+1)>=x0)
        index_x = i;
        break;
    end
end                          %找到x0所在区间
for i=1:m
    if(y(i)<=y0)&& (y(i+1)>=y0)
        index_y = i;
        break;
    end
end                          %找到y0所在区间

if index_x == 1
    cx(1:3) = index_x:(index_x+2);
else
    if index_x == n-1
        cx(1:3) = (index_x-1):(index_x+1);
    else
        if abs(x(index_x-1)-x0)>abs(x(index_x+2)-x0)
            cx(1:3) = (index_x):(index_x+2);
        else
            cx(1:3) = (index_x-1):(index_x+1);
        end
    end
end                        %找到离x0最近的三个x坐标

if index_y == 1
    cy(1:3) = index_y:(index_y+2);
else
    if index_y == m-1
        cy(1:3) = (index_y-1):(index_y+1);
    else
        if abs(y(index_y-1)-y0)>=abs(y(index_y+2)-y0)
            cy(1:3) = (index_y):(index_y+2);
        else
            cy(1:3) = (index_y-1):(index_y+1);
        end
    end
end                     %找到离y0最近的三个y坐标

for i=1:3        
    i1 = mod(i+1,3);
    if(i1 == 0) 
        i1 = 3;
    end
    i2 = mod(i+2,3);
    if(i2 == 0) 
        i2 = 3;
    end
    for j=1:3
       j1 = mod(j+1,3);
       if(j1 == 0) 
           j1 = 3;
       end
       j2 = mod(j+2,3);
       if(j2 == 0) 
           j2 = 3;
       end
       f = f+Z(cx(i),cy(j))*((t-x(cx(i1)))*(t-x(cx(i2)))/(x(cx(i))-x(cx(i1)))/(x(cx(i))-x(cx(i2))))* ...
             (s-y(cy(j1)))*(s-y(cy(j2)))/(y(cy(j))-y(cy(j1)))/(y(cy(j))-y(cy(j2)));
                   %插值多项式
    end
end
fz = subs(f,'[t s]',[x0 y0]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -