更优雅的方式来编写代码

时间:2017-06-30 13:18:42

标签: matlab

有没有更优雅的方式来编写这个简单的代码?目的是避免循环。 我尝试使用repmat索引,但它没有工作

for j=1:size(C,1);
    for k=1:size(C,2)
        C(j,k)=sum(sum(A([1:j],[1:k]).*B([j:-1:1],[k:-1:1])));
    end
end

修改

我修改了代码

j=1:size(C,1);
k=1:size(C,2);
B2=rot90(B,2);
C(j,k)=sum(sum(A(1:j,1:k).*B2(end+1-j:end,end+1-k:end)));

我在所有矩阵C上都有相同的值是正常的吗?

P.S:我知道conv2是性能更高的函数,但我只想了解问题所在(为什么(j,k)不变)和解决方案是什么(没有循环)

谢谢

1 个答案:

答案 0 :(得分:1)

这不仅仅是conv2(A,B,'same')的作用吗?

<强> 修改

我测试了它。它不完全一样。但conv(A,B)的左上角部分等于C