Matlab生成矩阵

时间:2011-09-25 17:05:32

标签: matlab

我正在尝试在matlab中生成一个矩阵,我将用它来求解多项式回归公式。

以下是我尝试生成矩阵的方法:

我有一个包含N个元素和整数d的输入向量X. d是一个整数,知道我们将向我们尝试以下列方式生成的矩阵添加新列的次数。

N = [X ^ d X ^ {d-1} ... X ^ 2 X O]

O是一个与X相同长度的矢量,全部为1。

每次d> 2它不起作用。

你能看到我的代码中的任何错误(我是matlab的新手):

function [ PR ] = PolyRegress( X, Y, d )
    O = ones(length(X), 1)
    N = [X O]

    for j = 2:d
        tmp = power(X, j)
        N = [tmp N]
    end

    %TO DO: compute PR


end

2 个答案:

答案 0 :(得分:5)

看起来matlab function vander已经做了你想做的事。

答案 1 :(得分:2)

VANDER函数只会生成向量d = length(X)-1的幂。对于更通用的解决方案,您可以使用BSXFUN函数(适用于d的任何值):

N = bsxfun(@power, X(:), d:-1:0)

示例:

>> X = (1:.5:2);
>> d = 5;
>> N = bsxfun(@power, X(:), d:-1:0)
N =
            1            1            1            1            1            1
       7.5938       5.0625        3.375         2.25          1.5            1
           32           16            8            4            2            1

我不确定这是否是您想要的顺序,但可以轻松撤消:使用0:d代替d:-1:0 ...