【发布时间】:2015-07-09 15:32:26
【问题描述】:
我想通过列将数组重塑为向量,并且我想在每列之间有一个偏移量,并将重叠的元素加在一起。 有任何想法吗?我已经使用双 for 循环完成了它,但我希望有更有效的东西......
for i=1:b
for j=1:a
overlap=j+(i-1)*offset;
vector(overlap) = vector(overlap) + (array(j,i));
end
end
例如我想拥有:
[ 1 4 7 ]
[ 2 5 8 ]
[ 3 6 9 ]
并且列之间的偏移量为 1,那么我想得到以下向量:
[ 1 2 7 5 13 8 9 ]
编辑我想过追加零,然后像这样添加每列
[ 1 2 3 0 0 0 0 ]
[ 0 0 4 5 6 0 0 ]
[ 0 0 0 0 7 8 9 ]
然后使用每列总和以获得一个新向量,其中元素为列的总和。 有谁知道创建这种对角矩阵的快速方法?
【问题讨论】:
-
“我想在每列之间有一个偏移量,将重叠的元素加在一起。”请举例说明
-
即第一列的最后 x 个元素应添加到下一列的前 x 个元素。
-
一个小矩阵的数值例子如何转换成你想要的格式?
-
确定我会在上面编辑我的帖子。 -编辑
标签: arrays matlab vector reshape overlap