Matlab中复变量的曲线拟合

时间:2018-02-16 19:02:10

标签: matlab curve-fitting

我想解决下图所示的以下方程组,

矩阵系统

enter image description here

其中矩阵A的分量是复数,角度(theta)从0 to 2*pi开始,有{m}个分区,n = 9。已知值z = x + iy.假设矩阵z的x和y是

z =

     0    1.0148
0.1736    0.9848
0.3420    0.9397
0.5047    0.8742
0.6748    0.8042
0.8419    0.7065
0.9919    0.5727
1.1049    0.4022
1.1757    0.2073
1.1999         0
1.1757   -0.2073
1.1049   -0.4022
0.9919   -0.5727
0.8419   -0.7065
0.6748   -0.8042
0.5047   -0.8742
0.3420   -0.9397
0.1736   -0.9848
     0   -1.0148

你如何迭代地解决它们?请注意,所需常量的第一个组件的值必须等于1.我正在使用Matlab。

1 个答案:

答案 0 :(得分:2)

您可以为复杂值数据应用simple multilinear regression

步骤1.准备矩阵以进行线性回归

您的线性系统

没有矩阵,写成

重新排列了yelds

如果你用矩阵重写它,你会得到

步骤2.应用多元线性回归

让上面的系统

,其中

现在,您可以应用线性回归,在

时返回最适合α的回归

其中

共轭转置

在MATLAB中

Y = Z - A(:,1);             % Calculate Y subtracting the first col of A from Z
R = A(:,:); R(:,1) = [];    % Calculate R as an exact copy of A, just without first column
Rs = ctranspose(R);         % Calculate R-star (conjugate transpose of R)
alpha = (Rs*R)^(-1)*Rs*Y;   % Finally apply multiple linear regression
alpha = cat(1, 1, alpha);   % Add alpha1 back, whose value is 1

或者,如果您更喜欢内置插件,请查看regress功能:

Y = Z - A(:,1);             % Calculate Y subtracting the first col of A from Z
R = A(:,:); R(:,1) = [];    % Calculate R as an exact copy of A, just without first column
alpha = regress(Y, R);      % Finally apply multiple linear regression
alpha = cat(1, 1, alpha);   % Add alpha1 back, whose value is 1