【发布时间】:2015-03-18 01:01:48
【问题描述】:
我有 1000 个尺寸为 2x2 的矩阵。 我现在需要做的是获得这些矩阵的 30 个连续幂(A^2,A^3... ...A^30)并将它们全部存储。
我发现了一个建议使用 bsxfun 的主题: Vectorizing the creation of a matrix of successive powers 但是,bsxfun 不适用于元胞数组(“使用 bsxfun 时出错 操作数必须是数字数组”)。
我能做什么?
PS。第二个问题:一旦我有了它们,我想绘制 4 个图(每个对应于 2x2 矩阵的 1 个元素),其中 30 个位置(x 轴)将显示置信带(第 16 和第 84 个百分位)。
编辑:有人链接到一个与我链接的问题相似的问题。据我所知,问题是关于向量,而不是矩阵数组。
【问题讨论】:
-
为什么将它们放在元胞数组中?
-
将所有数据放在一个多维数组中是有意义的,然后
bsxfun通过 behind-the-scenes 扩展来处理其余部分,假设当然是数字数据。 -
为什么不使用 for 循环?这是一个问题,您应该自然地重用
A^k来计算A^(k+1)。 -
Ander:我不需要将它们放在元胞数组中,这正是我尝试使用 bsxfun 的方式。默认情况下,我将它们存储在 2x2x1000 矩阵中。 Divakar:那我应该如何实施呢?我不太擅长matlab,所以如果可能的话,我会很感激代码。 Knedlsepp:我想把它扩展到更高的数字,我不希望它永远持续下去。 PS。 IDK 为什么行不中断,我使用 2 个空格...抱歉格式化!
-
@JohnnyQ:不要低估 JIT 的力量!
for循环并不像您想象的那么慢。尤其是对于这些简单的操作。