lihaitao123 发表于 2014-3-7 20:26

怎样含有字符的sym格式的转化数组乘积

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

首先是我编的切比雪夫的公式:
function T=Chebyshev2(n)
   syms x
   T(1:n)=sym(zeros(1,n));
   T(1)=1;
   T(2)=x;
   for i=3:n
       T(i)=2*x*T(i-1)-T(i-2);
   end然后是用最小二乘法拟合函数
function f=li2_23(c,x)
    T=Chebyshev2(4);
   f=c(1)*T(1)+c(2)*T(2)+c(3)*T(3)+c(4)*T(4);最后是主程序:
clear all
f=@(x)sin(x)
x=-6:0.2:6;
y=f(x);
plot(x,y,'*')
grid on;
hold on;
c0=ones(1,4);%迭代初值
c=lsqcurvefit(@li2_23,c0,x,y);%调用函数
g=@(x)c(1)*T(1)+c(2)*T(2)+c(3)*T(3)+c(4)*T(4)%构建拟合函数
x_g=-6:0.1:6;
y_g=g(x_g);
plot(x_g,y_g)
hold off
legend('原始数据','拟合数据');
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];(乘积带点)。毕竟当阶数较高时候,挨个展开带进去不太方便。谢谢
页: [1]
查看完整版本: 怎样含有字符的sym格式的转化数组乘积