马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
大家帮我看看,自己编程如何实现矩阵相关(不用函数)我想实现两矩阵的相关(两个608*800大小的矩阵),用函数实现时计算时间很长,而实际上我要求相关的部分只是很少的一部分函数,也就是如果我自己实现的话,时间上会缩短很多
在help中xcorr2的原理如图
A =
1 1 1 1 1
1 2 3 1 1
1 5 1 3 2
1 1 3 4 1
B =
2 3 1
5 1 3
1 3 4
c=xcorr2(A,B)
4 7 8 8 8 4 1
7 15 28 24 19 10 6
8 34 42 42 43 20 9
8 28 40 75 43 29 13
4 12 33 36 35 33 9
1 4 8 15 19 11 2
现将A扩充为(4+3-1,5+3-1)的矩阵,直接在后面补零
在将B的最后一个元素(3,3)与新生成的矩阵C(1,1)相关,存储在C(1,1),zaijiang B(3,2),B(3,3)与c(1,1),c(1,2)相关存储在 c(1,2).
一次后推,当B的(3,1)与C的(6,7)相关完成之后,实现,B(3,3),B(2,3)与C(1,1)C(2,1),相关,存储在C(2,1)位置,依次后推
下面是我实现的程序
A=[1,1,1,1,1;
1,2,3,1,1;
1,5,1,3,2;
1,1,3,4,1]
B=[2,3,1;
5,1,3;
1,3,4]
[r1,c1]=size(A)
[r2,c2]=size(B)
%将搜索图补零 or m=zeros(r1+r2-1,c1+c2-1);m(1:r1,1:c1) = A;
A_new = padarray(A,[r2-1,c2-1],'post')
%计算相关
for i=1:r1+r2-1
for j=1:c1+c2-1
for k=(r2:-1:i)
for g=(c2:-1:j)
C(i,j)=A_new(i,j)*conj(B(k,g));
end
end
end
end
C
这个程序出来之后的结果是错的
我不知道该怎么改,我觉得那几个for用的不对,请大家帮我看看 |