2011-09-25 4 views
2

다항 회귀 공식을 풀기 위해 사용할 매트릭스를 matlab에서 생성하려고합니다.Matlab 매트릭스 생성

I는 N 원소 및 정수 (D)를 포함하는 입력 벡터 X를 갖고 : 여기서

I는 행렬을 생성하기 위해 애 쓰고 방법이다. d는 다음과 같은 int를 생성하려고하는 행렬에 새 열을 추가 할 횟수를 나타내는 정수입니다.

N = X^D X^{D-1} ... X^2 × O]

O는 모두 1 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 
+0

대신에 출력을 다시 보았을 때 나는 제대로 작동하고 있다는 것을 깨달았습니다. 출력하기 전에 1.0e + 05 *를 보지 못했습니다. – gprime

답변

5

그것은 matlab function vander처럼 보이는 이미 수행 할 작업을 수행합니다.

+0

예, 이것은 내가 원하는 것을 수행합니다. 역순으로 반환합니다. 감사! – gprime

2

VANDER 함수는 d = length(X)-1까지 벡터의 멱승 만 생성합니다. 보다 일반적인 솔루션을 들어, (d의 값으로 작품을)를 BSXFUN 기능을 사용할 수 있습니다 :

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 

, 그러나 쉽게 반전 될 수 있습니다 : d:-1:0 ...