声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 科学计算 matlab 查看内容

曲面拟合(可以得到函数)

2015-10-28 02:12| 发布者: aspen| 查看: 1408| 评论: 45|原作者: glise|来自: 声振论坛

摘要: 对 n 个三维坐标(x,y,z) , 拟合成这样一个函数 Z(x,y)= aa(i,j)*x^i*y^j, i 从0--p ,j 从0--q 求和。 具体的看里面的readme,说的很详细function A=leftmatrix(x,p,y,q) % A*a=Ba 即为系数列矩阵 % A为左 ...
对 n 个三维坐标(x,y,z) , 拟合成这样一个函数

Z(x,y)= aa(i,j)*x^i*y^j,   i 从0-->p ,j 从0-->q 求和。

具体的看里面的readme,说的很详细
  1. function A=leftmatrix(x,p,y,q)
  2. % A*a=B  a 即为系数列矩阵  
  3. % A为左边(p-1)(q-1) 乘 (p-1)(q-1) 的矩阵
  4. % x,y 为长度一样的列矩阵 也就是给定离散点的x,y坐标
  5. % p,q为拟合的函数中x,y的指数

  6. m=length(x);
  7. if (nargin~=4) & (m~=length(y)), error('error check check!'); end

  8. A_length=p*q;                        % A 为p*q阶的方阵
  9. A=zeros(A_length,A_length);          % 赋值0
  10. for i=1 : p*q
  11.     for j= 1 : p*q
  12.         x_z=quotient(j-1,q)+quotient(i-1,q);     % x 的指数   quotient为求商
  13.         y_z=mod(j-1,q)+mod(i-1,q);            % y 的指数
  14.         A(i,j)=qiuhe(x,x_z,y,y_z);            
  15.     end
  16. end
复制代码
  1. function he=qiuhe(x,p,y,q,z)
  2. % he    x^p*y^q 从1->m的和
  3. % x,y 行向量 长度相同; p,q 为x,y系数
  4. %x=[2 3]; y=[ 3 4]; p=2; q= 2;

  5. m=length(x);
  6. if (nargin<4 )&(m~=length(y))            %输入量至少为四,x,y行向量长度必需一样
  7.     error('error check check!');
  8. end
  9. if nargin==4, z=ones(m,1); end  %没有 z , 默认为单位行向量

  10. he=0;
  11. for i=1:m
  12.     he=he+x(i)^p * y(i)^q*z(i);     % 1-->m 求和
  13. end
复制代码
  1. function sh=quotient(x,y)
  2. % sh 为 x/y 的商
  3. sh=(x-mod(x,y))/y;
复制代码
  1. function B=rightmatrix(x,p,y,q,z)
  2. % A*a=B
  3. % B  为一个列向量 长为p*q
  4. % x y z 为点的坐标 , p q 为x y指数

  5. if nargin~=5,  error('error check check! rightmatrix'); end
  6. B=zeros(p*q,1);
  7. for i=1 : p*q
  8.     x_z=quotient(i-1,q); y_z=mod(i-1,q); B(i,1)=qiuhe(x,x_z,y,y_z,z);
  9. end
复制代码
  1. function ff=main(x,p,y,q,z,xx,yy)
  2. % x y z 坐标向量 长度要一样
  3. % p ,q 为拟合函数中x,y 的系数
  4. % xx yy 为 需要拟合的数据 给出(x,y) 坐标 求z

  5. A=leftmatrix (x,p,y,q);             % A*a_n=B
  6. B=rightmatrix(x,p,y,q,z);

  7. %a_n=inv(A)*B;
  8. a_n=A\B;                          % 求a_n    inv(A)*B 效果不好 (存疑)

  9. for i=1 : length(a_n)             % 把长为p*q 的 a_n 列向量 转还 成p x q  的 aa 矩阵
  10.     ii=quotient(i-1,q)+1;         % quotient求商
  11.     jj=mod(i-1,q)+1; aa(ii,jj)=a_n(i,1);
  12. end
  13.                                  
  14. ff=0;                              % ff 是 xx,yy 带入所拟合的函数 求出 z
  15. for i=1 : p                        % 函数为 aa(i,j)*x^i*y^j  (i=0...p  ,j=0...q)
  16.     for j=1 : q                    % aa 为系数  p x q 的矩阵
  17.         ff=ff+aa(i,j) * xx^(i-1) * yy^(j-1);
  18.     end
  19. end
复制代码

[ 本帖最后由 ChaChing 于 2009-4-7 13:12 编辑 ]
readme.doc
发表评论

最新评论

引用 goldenjay 2006-4-29 09:40
为什么这个程序放到matlab里面会有问题?<BR>
引用 galary 2006-5-17 10:17
有没有对三维自变量情况下的拟合或者回归之类的方法?
我想请问,如果我的数据是一个四维的呢,就是测量数据受到三个因素的影响,即d=f(a,b,c),能拟合出函数来么?用什么方法解决?

[ 本帖最后由 ChaChing 于 2010-4-7 20:25 编辑 ]
引用 chbo76 2007-6-8 23:07
好,不错。
谢谢。支持一下。:lol
引用 sunbader 2008-5-26 13:49
x,y长度必须一样,这也太苛刻了!
引用 lihuafeng 2008-5-27 20:20
程序没任何问题,帮了我大忙,非常感谢!
引用 guan_2984 2008-5-30 18:06
xx,yy应该分别输入什么啊?
引用 2365215 2009-4-7 04:39
收藏了,谢谢lz
引用 luxyer 2009-6-29 16:46
这个程序具体该怎么运行呢?
引用 wpaul 2009-12-4 09:02
先感谢一下!谢谢。
引用 ChaChing 2009-12-4 10:16
原帖由 sunbader 于 2008-5-26 13:49 发表
x,y长度必须一样,这也太苛刻了!

x,y长度可以不一样吗?
引用 lamb 2010-2-22 09:47
这要不能用,我就真鸟了
引用 misslfx 2010-4-7 15:14
% xx yy  为需要拟合的数据 给出(x,y) 坐标 求z

xx,yy可以是你想要插值加密的点吧

[ 本帖最后由 ChaChing 于 2010-4-7 20:30 编辑 ]
引用 ChaChing 2010-4-7 20:36
怀疑没看程序说明就提问!? LS真体贴好心
还有三人问过(后面两人的便删除了!)
引用 cfdbear 2010-4-8 23:08
很好,感谢!!!!
引用 jinmeilake 2010-10-19 14:16
要是真的可以用,就帮了我大忙了 谢谢楼主啊!
引用 happy 2010-10-19 14:31

有什么问题呢?没发现
建议大家今后提问把具体问题说明清楚

没头没脑的一句话,谁也没办法帮忙,你也无法解决问题
引用 happy 2010-10-19 15:09
galary 发表于 2006-5-17 10:17
有没有对三维自变量情况下的拟合或者回归之类的方法?
我想请问,如果我的数据是一个四维的呢,就是测量数 ...

理论上只要你能给出合理的函数表达式,足够的拟合数据以及合理的初始值
那么采用最小二乘拟合函数lsqnonlin、lsqcurvefit等,是没有问题的
引用 happy 2010-10-19 15:10
sunbader 发表于 2008-5-26 13:49
x,y长度必须一样,这也太苛刻了!

呵呵,x,y长度不同?
那你拟合的是什么数据啊!
引用 happy 2010-10-19 15:11
luxyer 发表于 2009-6-29 16:46
这个程序具体该怎么运行呢?

这个问题太高深了,有点计算机怎么开机的意味

查看全部评论(45)

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-14 03:14 , Processed in 0.052353 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部