| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1692 人关注过本帖
标题:如何将matlab中的polyfit function 转换成 VBA code
取消只看楼主 加入收藏
acting
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-4-2
收藏
 问题点数:0 回复次数:0 
如何将matlab中的polyfit function 转换成 VBA code
如题;

或者 有没有大虾能将以下的matlab语言转成VBA的, 一样的效果
function p=mypolyfit(x,y,n)
A=[];
for i=0:n
    A=[A x'.^i];
end
p=inv(A'*A)*A'*y';
p=fliplr(p');






以下是matlab 中 polyfit 的帮助文档(有一些数学符号复制不过来,所以不是非常完整,但大体在那了, 对造成的不便抱歉--其实大家如果能把那个matlab code转成VBA, 就是polyfit function 了, 感谢!!)

polyfitPolynomial curve fitting

      Syntax
   p = polyfit(x,y,n)[p,S] = polyfit(x,y,n)[p,S,mu] = polyfit(x,y,n)Descriptionp = polyfit(x,y,n) finds the coefficients
of a polynomial p(x) of degree n that
fits the data, p(x(i)) to y(i), in a
least squares sense. The result p is a row vector of length n+1 containing
the polynomial coefficients in descending powers
[p,S] = polyfit(x,y,n) returns
the polynomial coefficients p and a structure S for
use with polyval to obtain error estimates or predictions.
Structure S contains fields R, df,
and normr, for the triangular factor from a QR decomposition
of the Vandermonde matrix of X, the degrees of freedom,
and the norm of the residuals, respectively. If the data Y are
random, an estimate of the covariance matrix of P is (Rinv*Rinv')*normr^2/df,
where Rinv is the inverse of R. If the
errors in the data y are independent normal with constant
variance, polyval produces error bounds that contain
at least 50% of the predictions.[p,S,mu] = polyfit(x,y,n) finds
the coefficients of a polynomial in
where
and
. mu is
the two-element vector
. This centering
and scaling transformation improves the numerical properties of both the polynomial
and the fitting algorithm.ExamplesThis example involves fitting the error function, erf(x),
by a polynomial in x. This is a risky project because erf(x) is
a bounded function, while polynomials are unbounded, so the fit might not
be very good. First generate a vector of x points, equally spaced
in the interval
; then evaluate erf(x) at
those points. x = (0: 0.1: 2.5)';
y = erf(x); The coefficients in the approximating polynomial of degree 6 are p = polyfit(x,y,6)

p =

0.0084  -0.0983   0.4217   -0.7435  0.1471   1.1064  0.0004There are seven coefficients and the polynomial is
To see how good the fit is, evaluate the polynomial at the data points
withf = polyval(p,x); A table showing the data, fit, and error is  table = [x y f y-f]

table =

    0          0          0.0004    -0.0004
    0.1000     0.1125     0.1119     0.0006
    0.2000     0.2227     0.2223     0.0004
    0.3000     0.3286     0.3287    -0.0001
    0.4000     0.4284     0.4288    -0.0004
    ...
    2.1000     0.9970     0.9969     0.0001
    2.2000     0.9981     0.9982    -0.0001
    2.3000     0.9989     0.9991    -0.0003
    2.4000     0.9993     0.9995    -0.0002
    2.5000     0.9996     0.9994     0.0002So, on this interval, the fit is good to between three and four digits.
Beyond this interval the graph shows that the polynomial behavior takes over
and the approximation quickly deteriorates. x = (0: 0.1: 5)';
y = erf(x);
f = polyval(p,x);
plot(x,y,'o',x,f,'-')
axis([0  5  0  2])
AlgorithmThe polyfit M-file forms the Vandermonde matrix,
, whose elements are powers
of
.
It then uses the backslash operator, \,
to solve the least squares problem
You can modify the M-file to use other functions of
as the basis functions.

非常感谢!!!!!!!
搜索更多相关主题的帖子: matlab polyfit function VBA 数学 
2008-04-02 16:13
快速回复:如何将matlab中的polyfit function 转换成 VBA code
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027013 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved