在Matlab中计算矩阵幂(矩阵多项式)的加权和

在Matlab中计算矩阵幂(矩阵多项式)的加权和,matlab,matrix-multiplication,polynomials,Matlab,Matrix Multiplication,Polynomials,给定一个nxn矩阵A_k和一个nx1向量x,有什么聪明的计算方法吗 使用Matlab?x_i是向量x的元素,因此J是矩阵的和。到目前为止,我已经使用了for循环,但我想知道是否有更聪明的方法。简短回答:您可以使用内置的matlab函数进行矩阵多项式求值,如下所示: x = x(end:-1:1); % flip the order of the elements x(end+1) = 0; % append 0 J = polyvalm(x, A); 长答案:Matlab在内部使用循环。因此

给定一个nxn矩阵A_k和一个nx1向量x,有什么聪明的计算方法吗


使用Matlab?x_i是向量x的元素,因此J是矩阵的和。到目前为止,我已经使用了for循环,但我想知道是否有更聪明的方法。

简短回答:您可以使用内置的matlab函数进行矩阵多项式求值,如下所示:

x = x(end:-1:1); % flip the order of the elements
x(end+1) = 0; % append 0
J = polyvalm(x, A);
长答案:Matlab在内部使用循环。因此,如果您优化自己的实现,您没有获得那么多,或者您的性能甚至更差(请参阅my
calcJ_LoopOptimized
函数):

对于
n=5
,我得到以下结果:

t_loopOptimised = 0.0077
t_builtin       = 0.0084
t_loop          = 0.0295
t_loopOptimised = 7.4425e-06
t_builtin       = 4.7399e-05
t_loop          = 1.0496e-04 

请注意,我的计时在不同的运行之间有些波动,但优化的循环几乎总是比内置函数快(小
n
)6倍?A(i,k)?你能给出一个小的matlab例子吗?对不起,a_k只是矩阵的名字,所以a_k^i是a_k对iSo的幂,什么是J,是矩阵还是数字?{A_k}是矩阵序列吗?x_i是nx1向量还是x的第i个元素?
t_loopOptimised = 7.4425e-06
t_builtin       = 4.7399e-05
t_loop          = 1.0496e-04