主题中讨论的其他器件:C2000WARE
你好。
我使用 CCS10运行了以下程序。
我的目标是找到最小二乘法(二次函数)的系数。
但是、当我在 MATLAB 中进行相同的计算时、我得到了答案、但我似乎无法在 DSP 中计算它。
当我检查这些值时、这些值从一开始就存在差距。
是否可以消除这种差异?
请提供建议。
谢谢。
include "driverlib.h" #include "device.h" #include "math.h" double x[100]、y[100]; void main (void) { int i=0; 双 x0=0、x1=0、x2=0、x3=0、x4=0、x2=0、x1y=0、x0y=0; X[1]=2.01;y[1]=0.211; X[2]=2.011;y[2]=0.238; X[3]=2.012;y[3]=0.266; X[4]=2.013;y[4]=0.295; X[5]= 2.014;y[5]= 0.324; X[6]= 2.015;y[6]= 0.354; X[7]= 2.016;y[7]= 0.385; X[8]=2.017;y[8]=0.416; X[9]= 2.018;y[9]= 0.448; X[10]= 2.019;y[10]= 0.481; X[11]=2.02;y[11]=0.514; X[12]=2.021;y[12]=0.549; X[13]=2.022;y[13]=0.583; X[14]=2.023;y[14]=0.619; X[15]=2.024;y[15]=0.655; X[16]=2.025;y[16]=0.692; X[17]=2.026;y[17]=0.730; X[18]=2.027;y[18]=0.768; X[19]=2.028;y[19]=0.807; X[20]=2.029;y[20]=0.847; X[21]=2.03;y[21]=0.887; X[22]=2.031;y[22]=0.928; X[23]=2.032;y[23]=0.970; X[24]=2.033;y[24]=1.013; X[25]=2.034;y[25]=1.056; X[26]=2.035;y[26]=1.100; X[27]=2.036;y[27]=1.144; X[28]=2.037;y[28]=1.190; X[29]=2.038;y[29]=1.236; X[30]=2.039;y[30]=1.282; X[31]=2.04;y[31]=1.330; X[32]=2.041;y[32]=1.378; X[33]=2.042;y[33]=1.426; X[34]=2.043;y[34]=1.476; X[35]=2.044;y[35]=1.526; X[36]=2.045;y[36]=1.577; X[37]=2.046;y[37]=1.628; X[38]=2.047;y[38]=1.681; X[39]=2.048;y[39]=1.733; X[40]=2.049;y[40]=1.787; X[41]= 2.05;y[41]= 1.841; X[42]=2.051;y[42]=1.896; X[43]=2.052;y[43]=1.952; X[44]=2.053;y[44]=2.008; X[45]=2.054;y[45]=2.065; X[46]=2.055;y[46]=2.123; X[47]=2.056;y[47]=2.182; X[48]=2.057;y[48]=2.241; X[49]=2.058;y[49]=2.301; X[50]=2.059;y[50]=2.361; 对于(i = 1;i <= 50;i++) { x0 = x0 + 1; x1 = x1 + x[i]; X2 = x2 + pow (x[i]、2); X3 = x3 + pow (x[i]、3); x4 = x4 + pow (x[i]、4); x2y=x2y+y[i]*pow (x[i]、2); x1y=x1y+y[i]*x[i]; x0y = x0y + y[i]; } //OK 双 A1、A2、A3、B1、B2、B3、A; a1=x4*x2*x0; a2=x3*x1*x2; a3=x2*x1*x3; b1=x2*x2*x2; b2=x3*x3*x0; B3=x4*x1*x1; //OK A=A1-B1+A2-B2+A3-B3; //OK 逆行列 μ s double g11、g12、g13、g21、g22、g23、g31、g32、g33; G11=(x2*x0-x1*x1)/a;G12=-(x3*x0-x2*x1)/a;G13=(x3*x1-x2*x2)/a; G21=-(x3*x0-x1*x2)/A;G22=(x4*x0-x2*x2)/A;G23=-(x4*x1-x2*x3)/A; G31=(x3*x1-x2*x2)/a;G32=-(x4*x1-x3*x2)/a;G33=(x4*x2-x3*x3)/a; //OK 最小二乗法 μ s double p[10]; P[0]=g11*x2U+G12*x1y+G13*x0y; P[1]=G21*x2U+G22*x1Y+G23*x0y; P[2]=g31*x2U+G32*x1y+G33*x0y; ESTOP0; }