Octave 中的矩阵操作

Matrix manipulation in Octave

我想将 mX1 矩阵 X 映射到 mXp 矩阵 Y 中,新矩阵中的每一行如下:

Y = [ X X.^2 X.^3 ..... X.^p]

我尝试使用以下代码:

Y = zeros(m, p);
for i=1:m
    Y(i,:) = X(i);
     for c=2:p
    Y(i,:) = [Y(i,:) X(i).^p];
    end
end

你想做的事情叫做广播。如果您使用的是 Octave 3.8 或更高版本,则以下内容可以正常工作:

octave> X = (1:5)'
X =

   1
   2
   3
   4
   5

octave> P = (1:5)
P =

   1   2   3   4   5

octave> X .^ P
ans =

      1      1      1      1      1
      2      4      8     16     32
      3      9     27     81    243
      4     16     64    256   1024
      5     25    125    625   3125

需要注意的重要一点是 X 和 P 分别是列向量和行向量。见 octave manual on the topic.

对于旧版本的 Octave(没有自动广播),同样可以通过 bsxfun (@power, X, P)

完成