Matlab Генерация матрицы - PullRequest
       0

Matlab Генерация матрицы

2 голосов
/ 25 сентября 2011

Я пытаюсь сгенерировать матрицу в matlab, которую я буду использовать для решения формулы полиномиальной регрессии.

Вот как я пытаюсь сгенерировать матрицу:

У меня есть входной вектор X, содержащий N элементов и целое число d. d - целое число, чтобы знать, сколько раз мы добавим новый столбец в матрицу, которую мы пытаемся сгенерировать следующим образом.

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

O - это вектор такой же длины, что и X со всеми единицами.

Каждый раз, когда 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 ]

5 голосов
/ 25 сентября 2011

Похоже, функция Matlab Вандер уже делает то, что вы хотите сделать.

2 голосов
/ 27 сентября 2011

Функция 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 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...