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)
完成
我想将 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)