【发布时间】:2015-12-09 03:27:33
【问题描述】:
不幸的是,我的编程技能不是那么先进,我真的需要向量化一些循环来完成我的论文。 我试图让事情变得非常清晰和简单,我在matlab中有以下两个问题:
1. 如果我们有一个 5x5 矩阵 A 并且我们想将该矩阵的对角元素设置为矩阵 B 的对角线,除了 diag(A)=diag(B) 我们可以使用:
for i=1:5
B(i,i)=A(i,i)
end
现在如果我想对它进行矢量化,我不能使用:
i=1:5
B(i,i)=A(i,i)
这样,我们以 1:5 的比例分配每个组合。因此,最后我们将 A 的每个元素分配为等于 B 而不是对角线。 有什么方法可以分配每一对相同的 (i,i)? 我试过了:
i=1:5
j=1:5
B(i,find(j==i))=A(i,find(j==i))
但还是不行。我再说一遍,我知道 diag 属性,但我只对特定问题感兴趣。
2.
类似的问题是填充。 b=[个(2,2)个(2,2)*2个(2,2)*3个(2,2)*4];
a = zeros(8,12);
for i=1:4
a((i-1)*2+1:(i)*2,(i-1)*3+1:(i)*3) = [8*ones(2,1) b(:,[2*(i-1)+1 2*i])];
end
感谢您的宝贵时间和帮助。
【问题讨论】:
-
您的第二个问题究竟是什么?能解释清楚一点吗?
标签: matlab vector vectorization