开发者

Matlab Generating a Matrix

I am trying to generate a matrix in matlab which I will use to solve a polynomial regression formula.

Here is how I am trying to generate the matrix:

I have an input vector X containing N elements and an integer d. d is the integer to know how many times we will add a new column to the matrix we are trying to generate int he following way.

N = [X^d X^{d-1} ... X^2开发者_JAVA技巧 X O]

O is a vector of same length as X with all 1's.

Everytime d > 2 it does not work.

Can you see any errors in my code (i am new to 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


It looks like the matlab function vander already does what you want to do.


The VANDER function will only generate powers of the vector upto d = length(X)-1. For a more general solution, you can use the BSXFUN function (works with any value of d):

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

Example:

>> 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

I'm not sure if this is the order you want, but it can be easily reversed: use 0:d instead of d:-1:0...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜