【发布时间】:2015-09-23 20:38:19
【问题描述】:
我一直在寻找一种方法来实现一个 MATLAB 函数“Pow(A,k)” 仅使用基本的线性代数运算(如矩阵向量或矩阵矩阵乘法)将矩阵 A 提高到 k 次方。
实现一定要高效,我在O(n^2)中找不到方法,有可能吗?
我唯一知道的是我们可能想要使用 MATLAB 函数“de2bi”来提取整数的二进制数字
【问题讨论】:
-
为什么不能使用
B = A^k;? -
好吧,分配的目的是为我们自己编程。当然我们可以再用Matlab的“^”操作符来比较实现的效率
-
好吧,那你肯定做不到 O(n^2)...
-
检查重复的帖子。该帖子本质上使用了一个循环并将
A与自身n相乘...实现A^n。但是,问题略有不同,因为问题是将循环的每次迭代中的每个功率作为切片存储到 3D 矩阵中,但这基本上可以满足您的需求……而且速度非常快。您只需要记住最后的结果,因此如果您忽略中间存储并查看最终结果矩阵,代码将运行得更快。永远不要直接打折循环。您会惊讶于它们在特定情况下的执行速度。 -
我真的不明白它可以如何使用以及为什么......除非你没有告诉我们整个故事。
标签: matlab matrix linear-algebra