假设我有一个包含 3 列的矩阵 A c1
、c2
和 c3
。
1 2 9
3 0 7
3 1 4
我想要一个维度为 (3x3n) 的新矩阵,其中第一列是 c1
,第二列是 c1^2
,第 n 列是 c1^n
,第n+1列为c2
,第n+2列为c2^2
,依此类推。有没有在 MATLAB 中快速执行此操作的方法?
最佳答案
合并PERMUTE , BSXFUN , 和 RESHAPE ,您可以很容易地做到这一点,以便它适用于任何大小的 A
。为清楚起见,我将说明分开,如果需要,您可以将它们合并为一行。
n = 2;
A = [1 2 9; 3 0 7; 3 1 4];
[r,c] = size(A);
%# reshape A into a r-by-1-by-c array
A = permute(A,[1 3 2]);
%# create a r-by-n-by-c array with the powers
A = bsxfun(@power,A,1:n);
%# reshape such that we get a r-by-n*c array
A = reshape(A,r,[])
A =
1 1 2 4 9 81
3 9 0 0 7 49
3 9 1 1 4 16
关于matlab - 用多项式展开矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765730/