我有2(1 x n)个矩阵,我想将每个元素乘以n次,每次将第二个矩阵移位1步。
这段代码工作正常,但我想知道是否有更好的方法(n乘n)矩阵,对角线上的值和没有' for循环'会更快(更优雅)?
y = [];
for i=[1:length(x1)]
x2 = circshift(x2,[0,1]);
y(i) = sum(x1 .* x2);
end;
答案 0 :(得分:2)
您可以使用卷积来获得与代码相同的结果:
y = conv(x1, fliplr([x2 x2]), 'same');