声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1177|回复: 0

[绘图技巧] 怎样含有字符的sym格式的转化数组乘积

[复制链接]
发表于 2014-3-7 20:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 牛小贱 于 2014-3-7 20:28 编辑

首先是我编的切比雪夫的公式:
  1. function T=Chebyshev2(n)
  2.    syms x
  3.    T(1:n)=sym(zeros(1,n));
  4.    T(1)=1;
  5.    T(2)=x;
  6.    for i=3:n
  7.        T(i)=2*x*T(i-1)-T(i-2);
  8.    end
复制代码
然后是用最小二乘法拟合函数
  1. function f=li2_23(c,x)
  2.     T=Chebyshev2(4);
  3.      f=c(1)*T(1)+c(2)*T(2)+c(3)*T(3)+c(4)*T(4);
复制代码
最后是主程序:
  1. clear all
  2. f=@(x)sin(x)
  3. x=-6:0.2:6;
  4. y=f(x);
  5. plot(x,y,'*')
  6. grid on;
  7. hold on;
  8. c0=ones(1,4);  %迭代初值
  9. c=lsqcurvefit(@li2_23,c0,x,y);  %调用函数
  10. g=@(x)c(1)*T(1)+c(2)*T(2)+c(3)*T(3)+c(4)*T(4)  %构建拟合函数
  11. x_g=-6:0.1:6;
  12. y_g=g(x_g);
  13. plot(x_g,y_g)
  14. hold off
  15. legend('原始数据','拟合数据');
  16. c
复制代码
??? Error using ==> lsqncommon at 191
Function value and YDATA sizes are incommensurate

但是把T=Chebyshev2(4)单独拿出运行,并且在多项式乘方加点。T=[ 1, x, 2*x.^2 - 1, 2.*x.*(2.*x.^2 - 1) - x];然后把T(1),T(2),T(3),T(4)代入就可以运行。所以我的问题是怎么Chebyshev2(n)生成 的sym矩阵方便的转化为T=[ 1, x, 2*x.^2 - 1, 2.*x.*(2.*x.^2 - 1) - x];(乘积带点)。毕竟当阶数较高时候,挨个展开带进去不太方便。谢谢
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 09:14 , Processed in 0.055083 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表