2011-09-25 237 views
2

我想在matlab中生成一個矩陣,我將用它來求解一個多項式迴歸公式。Matlab生成矩陣

這裏是我正在嘗試生成矩陣:

我有一個包含N個單元和整數d的輸入矢量X。 d是知道我們將多少次添加一個新列到我們試圖按以下方式生成的矩陣的整數。

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的向量的冪。爲了更廣泛的解決方案,您可以使用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 ...