2012-11-19 2 views
1

나는 vandermonde matrix를 사용하여 matlab을 구성하려고합니다.vandermonde 매트릭스 matlab 혼동

내 입력 벡터가 사용

t = [ 1 2 3 4 ]' 

내 출력되는 vander function입니다 : 지금은 틀리지 않는 경우

ans = 

1  1  1  1 
8  4  2  1 
27  9  3  1 
64 16  4  1 

문제의 벡터의 반데 몬드 행렬이 있어야한다 :

1 1 1 1 
1 2 4 8 
1 3 9 27 
1 4 16 64 

이제는 다음과 같이 원하는 결과를 얻을 수 있음을 깨달았습니다.

>> fliplr(vander(t)) 

ans = 

1  1  1  1 
1  2  4  8 
1  3  9 27 
1  4 16 64 

감사합니다.

+0

Vandermonde 행렬의 열 순서는 단 한 가지, 즉 생성 될 수있는 결과 모델의 다항식 계수의 순서에 영향을 미칩니다. 일단 나오는 양식과 해석 방법을 알기 만하면 양식을 사용하고 행복하게 할 수 있습니다. –

+1

일반적인 팁과 마찬가지로 :'bsxfun (@power, t, 0 : numel (t) -1);을 사용하여'vander'보다 훨씬 빠르게 만들 수있는 것처럼 보입니다. bsxfun (@power, t, numel (t) -1 : -1 : 0);'). –

+0

'vander'의 내용을 복사하여 붙여 넣기하는 것이 더 빠릅니다. –

답변

-1

매트릭스를 왼쪽/오른쪽으로 돌려 원하는 것을 얻으십시오.

+6

'transpose (vander (t))'는 [1 8 27 64; 1 4 9 16; 1 2 3 4; 1 1 1 1] – HebeleHododo

11

위키 백과와 매쓰 월드가 여러분의 의견에 동의합니다. 그러나 MATLAB documentation을 말한다 :

A = 밴더 (V)로 반환 된 Vandermonde 열에있는 능력 벡터 V의 행렬, 즉, A (I, J) = V (I)^(NJ) , 여기서 n = 길이 (v).

Mathworks에서 왜 이렇게했는지 알 수 없습니다. fliplr을 사용하여 원하는 결과를 얻을 수 있습니다.

+5

TMW는 polyfit 및 polyval과 같은 도구에서 계수의 차수가 감소하기를 원했기 때문에 그랬습니다. 이것은 다항식과 조각 별 다항식 (spline, pchip 등)을 사용하는 모든 도구의 일관성을 유지합니다. 왜 누군가가 먼저 그 순서대로했는지는 흥미 롭습니다. 그러나 Cleve 나 Carl에게 직접 물어볼 필요가 있습니다. 분명히 그들은 범인이었다. 내가 해결할 때 수행 된 열 치환과 관련이 있는지 궁금하지만, 그것은 단지 야생 추측입니다. –