倍频编码-我需要多项式的帮助编码系数

时间:2019-04-28 15:07:39

标签: matlab octave linear-algebra polynomial-math

这个问题很容易手动完成,但是,我很难用代码编写。

有一个四次多项式:

P(x)=ax^4+bx^3+cx^2+dx+e

还有一个给定的矩阵M:

5 0 -1 2 9
-2 -1 0 1 2

第一行给出P(x),第二行给出x的值。

使用矩阵M中的信息,找到系数:

a,b,c,d,e

我会知道如何手动进行此工作,将每列细分并与其他列同时求解,以获得每个系数的值或将其放入矩阵中。

我知道该怎么做,但是我不知道如何编写代码。

我确实相信最后一行将是linearsolve(M(,1),M(,2)),因此能够获得每个系数,但是我不知道如何到达该行。

2 个答案:

答案 0 :(得分:0)

欢迎张智贤

% Values of y and x (note: in your post you had 2 values at x = 1, I assumed that was an accident)
M = [5 0 -1 2 9 ; -2 -1 0 1 2];

% Separate for clarity
y = M(1,:);
x = M(2,:);

% Fit to highest order polynomial model
f = fit(x',y',['poly', num2str(length(y)-1)])

% Extract coefficients
coeff = coeffvalues(f);

% Plotting
X = linspace(min(x)-1, max(x) + 1, 1000) ;
plot(x,y,'.',X,f(X))

编辑

对不起,我正在使用Matlab。查看八度文档。您应该能够使用

来获得系数
p = polyfit(x,y,length(y)-1)';

然后以您指定的方式显示系数

strcat(cellstr(char(96+(1:length(p))')), { ' = ' } , cellstr(num2str(p)))

答案 1 :(得分:0)

y=[5 0 -1 2 9];
x=[-2 -1 0 1 2];
P=polyfit(x,y,2)

给予

P =
   2.0000   1.0000  -1.0000

这些是您的c,d系数,其他系数为零。您可以检查结果:

polyval(P, x)

ans =
   5.0000e+00   2.2204e-16  -1.0000e+00   2.0000e+00   9.0000e+00

为您提供y

顺便说一句,因为x = 0和x = + /-1的函数值很容易计算,所以无需计算器就可以很快解决这个问题。