我想将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
答案 0 :(得分:1)
你想做什么叫做brodcasting。如果您使用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)