在方阵中使用对角线值?避免循环

时间:2014-07-30 10:32:46

标签: matlab

我有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;

1 个答案:

答案 0 :(得分:2)

您可以使用卷积来获得与代码相同的结果:

y = conv(x1, fliplr([x2 x2]), 'same');