matlab - 用多项式展开矩阵

标签 matlab matrix polynomial-math

假设我有一个包含 3 列的矩阵 A c1c2c3

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/

相关文章:

c - 如何使用MATLAB fread读取一个txt文件?

Java 2维整数数组检查是否存在

ios - 如何将 CGAffineTransform 应用于 CGPoint

python - Python 中二维多项式的 `polyfit` 等价物

c++ - 如何在 C++ 中求解五次多项式

matlab - 0 和 1 的矩阵,其中后续行中的分配取决于前一行

macos - 尝试在 MatLab 中编译 C mex 文件

r - 如何在矩阵上使用 for 循环

algorithm - 多项式的 n 次方算法

matlab - 空Matlab结构S和所有元素S之间的区别(:)