【发布时间】:2014-08-11 13:59:44
【问题描述】:
在 MATLAB 中,我有一个长度为 n 的向量 x,其中 n 通常为 O(10),我想构建一个大小为 [n^m,m] 的高矩阵 A,其中 m 再次为 0(10 )。矩阵有一个特殊的形式:如果 n=4 和 m=6,让
x=[x1; x2; x3; x4]
那么A是
x1 x1 x1 x1 x1 x1
x2 x1 x1 x1 x1 x1
x3 x1 x1 x1 x1 x1
x4 x1 x1 x1 x1 x1
x1 x2 x1 x1 x1 x1
x2 x2 x1 x1 x1 x1
x3 x2 x1 x1 x1 x1
x4 x2 x1 x1 x1 x1
x1 x3 x2 x1 x1 x1
. .
. .
. .
x4 x4 x4 x4 x4 x4
在实践中,每一列都是通过重复 x 的元素获得的,每列的步幅增加。我怎样才能做到这一点?如果可能,我更喜欢高效(矢量化)的解决方案,因为如您所见,A 的行数随着 m 呈指数增长。
编辑:哎呀,对不起!我忘了我还需要基于具有相同长度 x 的向量 w 构建一个大小为 [n^m,1] 的向量 V
w=[w1; w2; w3; w4]
V 是
w1^6
w2*w1^5
w3*w1^5
.
.
.
w4^6
希望糟糕的图形足够清晰。无论如何,V 是一个长度为 n^m 的列向量。猜猜我可以从 w 创建一个矩阵 B,就像从 x 创建一个矩阵 A,然后使用 prod(B,2)?
【问题讨论】:
标签: matlab matrix vectorization repeat