MATLAB学习:MATLAB 符号运算 在 MATLAB 中,符号数学工具箱( Symbolic Math Toolbox )用于实现符号运算。 2.7.1 创建符号变量 参与符号运算的整个过程的是符号变量,即使在符号运算中所出现的数字也按符号变量处理。 MATLAB 中, sym 和 syms 函数用于建立符号变量。调用方式如下: sym(‘ 变量名 ’) syms 变量名列表 2.7.2 数值与符号的转换 MATLAB 中,利用 Sym 函数将数值结果转换为符号表达式。 Sym(r,’f’): 表示返回符号浮点表示式 Sym(r,’r’): 表示返回符号有理数表示式 Sym(r,’e’): 表示返回符号有理数表示式 Sym(r,’d’): 表示返回符号十进制小数 2.7.3 数值矩阵转换为符号矩阵 MATLAB 中,必须事先定义符号矩阵,然后才能对矩阵进行符号运算。利用 Sym 函数将数值结果转换为符号表达式。调用格式: Sym( 矩阵名 ) 2.7.4 符号替换 MATLAB 中,利用 subs 函数用于符号变量的替换,该命令适用单个符号矩阵 \ 符号表达式 \ 符号代数方程和微分方程中的变量替换。调用格式如下: subs(S,new): 表示用新变量 new 替换 S 中的默认变量 subs(S,new,old): 表示用新变量 new 替换 S 中的指定变量 old 2.7.5 常用的符号运算 符号变量和数字变量之间可以转换,也可以 2.7.6 矩阵的秩 矩阵线性无关的行数和列数称为矩阵的秩,使用 rank 函数求解。 rank( A ) 2.7.7 矩阵的逆【矩阵 A 必须为方阵】 对于矩阵 A ,如果存在一个与其同阶的方阵 B ,使得 A * B = B * A = I ( I 为单位矩阵),则称 B 为 A 的逆矩阵,当然 A 也是 B 的逆矩阵。使用 inv 函数求解。 inv( A ) 2.7.8 矩阵的迹 矩阵的迹等于矩阵的特征值之和。使用 trace 函数求解。 trace ( A ) 2.7.9 矩阵的范数及其计算函数 使用 cond 函数求解。 cond( A ,1): 计算 A 的 1- 范数下的条件数 cond( A ) 或 cond( A ,2): 计算 A 的 2- 范数下的条件数 cond( A ,inf): 计算 A 的 ∞ - 范数下的条件数 2.7.10 矩阵的特征值与特征向量 使用 eig 函数求解。 E =eig( A ): 求矩阵 A 的全部特征值,构成向量 E =eig( A ): 求矩阵 A 的全部特征值,构成对角阵 D ,并求 A 的特征向量构成 V 的列向量。 =eig( A,’nobalance’ ): 与第二种格式类似,但第二种格式中先对 A 作相似变换后再求矩阵 A 的特征值和特征向量,而格式三是直接求矩阵 A 的特征值和特征向量。
Matlab 的曲线拟合工具箱 CFtool 使用 it 2010-04-06 11:24:00 阅读 98 评论 0 字号:大中小 订阅 下面结合我使用的 Matlab R2007b 来简单介绍如何使用这个工具箱。 假设我们要拟合的函数形式是 y=A*x*x + B*x, 且 A0,B0 。 1 、在命令行输入数据: 》 x= 》 y= 后点击 “Create data set” 按钮,退出 “Data” 窗口,返回工具箱界面,这时会自动画出数 选择数据集,然后通过下拉菜单 “Type of fit” 选择拟合曲线的类型,工具箱提供的拟合类 型有: Custom Equations :用户自定义的函数类型 Exponential :指数逼近,有 2 种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x) Fourier :傅立叶逼近,有 7 种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w) Gaussian :高斯逼近,有 8 种类型,基础型是 a1*exp(-((x-b1)/c1)^2) Interpolant :插值逼近,有 4 种类型, linear 、 nearest neighbor 、 cubic spline 、 shape- preserving Polynomial :多形式逼近,有 9 种类型, linear ~ 、 quadratic ~ 、 cubic ~ 、 4-9th degree ~ Power :幂逼近,有 2 种类型, a*x^b 、 a*x^b + c Rational :有理数逼近,分子、分母共有的类型是 linear ~ 、 quadratic ~ 、 cubic ~ 、 4-5th degree ~ ;此外,分子还包括 constant 型 Smoothing Spline :平滑逼近(翻译的不大恰当,不好意思) Sum of Sin Functions :正弦曲线逼近,有 8 种类型,基础型是 a1*sin(b1*x + c1) Weibull :只有一种, a*b*x^(b-1)*exp(-a*x^b) Equations 线性等式 ” 和 “General Equations 构造等式 ” 两种标签。 在本例中选 Custom Equations ,点击 “New” 按钮,选择 “General Equations” 标签,输入函 数类型 y=a*x*x + b*x ,设置参数 a 、 b 的上下限,然后点击 OK 。 ( 5 )类型设置完成后,点击 “Apply” 按钮,就可以在 Results 框中得到拟合结果,如下例: Coefficients (with 95% confidence bounds): a = 0.009194 (0.009019, 0.00937) b = 1.78e-011 (fixed at bound) Goodness of fit: SSE: 6.146 R-square: 0.997 Adjusted R-square: 0.997 RMSE: 0.8263 同时,也会在工具箱窗口中显示拟合曲线。 这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在 “ Fitting” 窗口点击 “New fit” 按钮,按照步骤( 4 ) ~ ( 5 )进行一次新的拟合。 不过,需要注意的是, cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变 量只能有一个。对于混合型的曲线,例如 y = a*x + b/x ,工具箱的拟合效果并不好。下一 篇文章我介绍帮同学做的一个非线性函数的曲线拟合。 以上内容出自: http://hi.baidu.com/snowlxm/blog/item/15a714b122ae95500823025f.html 上边对 cftool 工具箱做了很详尽的说明,但并没有对各种曲线拟合的性能做点评,在单变量曲线拟合中,如何选取一种最优化的拟合方式是非常重要的,我们在采用 CFTOOL 拟合后,会有一些性能说明,如: Goodness of fit: SSE: 6.146 R-square: 0.997 Adjusted R-square: 0.997 RMSE: 0.8263 官方的解释: Results -- Displays detailed results for the current fit including the fit type (model, spline, or interpolant), the fitted coefficients and 95% confidence bounds for parametric fits, and these goodness of fit statistics: SSE -- The sum of squares due to error. This statistic measures the deviation of the responses from the fitted values of the responses. A value closer to 0 indicates a better fit. R-square -- The coefficient of multiple determination. This statistic measures how successful the fit is in explaining the variation of the data. A value closer to 1 indicates a better fit. Adjusted R-square -- The degree of freedom adjusted R-square. A value closer to 1 indicates a better fit. It is generally the best indicator of the fit quality when you add additional coefficients to your model. RMSE -- The root mean squared error. A value closer to 0 indicates a better fit.
ga,genetic algorithm,遗传算法 大概弄了一天,才把gaot的工具箱装上了,能用了 工具箱是在matlab装完后期补装的,所以不太好弄。 装的时候有两个问题: 1,把工具箱放在matlab/toolbox/目录下面,打开matlab-file-set path 弹出一个对话框,点‘add path, 选择matlab/toolbox/gaot,save-close. 2,在matlab主窗口打开文件,寻找到matlab/toolbox/gaot/startup.m文件,打开 里面内容为path(path,'\afs\eos\info\ie\ie589k_info\GAOT')修改以下单引号中的路径,改为gaot的安装所在位置即可,若出现下面问题 Matlab每次启动时总会出现 Warning: Name is nonexistent or not a directory: \afs\eos\info\ie\ie589k_info\GAOT. In C:\MATLAB6p5\toolbox\matlab\general\path.m at line 116 In C:\MATLAB6p5\gaot\startup.m at line 1 In C:\MATLAB6p5\toolbox\local\matlabrc.m at line 199 就可以用2的方法解决了 之后看了一个遗传算法解决最大值的问题例子,才知道目标函数要先单独存在work里,有意思。