Skip to content

Commit 01df5f2

Browse files
author
gaoyongyu
committed
update length of corss-correlation
1 parent 5b68ddc commit 01df5f2

File tree

3 files changed

+42
-14
lines changed

3 files changed

+42
-14
lines changed

main.m

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
clear all;clc;close all;
22

33
%%%% you can set arry a and arry b in different value, try some trails
4-
a = [1 2 8 8];
4+
a = [1 2 8 8];
55
b = [2 2 33 0 12 2];
66

77
%compute convolution
8-
res = my_conv(a,b);
8+
res = my_conv(a,b); %or my_conv(a,b, 'conv')
99
c = conv(a, b);
10-
e = my_conv_usingfft(a, b);
11-
12-
%compute corss correlation
10+
e = my_conv_usingfft(a, b);%or my_conv(a,b, 'conv')
11+
%
12+
% %compute corss correlation
1313
d = xcorr(a, b);
1414
b = flip(b);
15-
f = my_conv_usingfft(a,b);
16-
g = my_conv(a, b);
15+
f = my_conv_usingfft(a,b, 'corr');
16+
g = my_conv(a, b, 'corr');
1717

1818
%%%
1919
%%% Check the results of my function with official function

my_conv.m

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
1-
function [ convRes ] = my_conv(aSignal, bSignal)
2-
aLen= length(aSignal);
1+
function [ convRes ] = my_conv(aSignal, bSignal, mode)
2+
aLen= length(aSignal);
33
bLen = length(bSignal);
4+
if (nargin < 3)
5+
mode = 'conv';
6+
end
7+
if (mode == 'corr')
8+
if (aLen > bLen)
9+
bSignal = [bSignal zeros(1, aLen - bLen)];
10+
bLen = length(bSignal);
11+
else
12+
aSignal = [aSignal zeros(1, bLen - aLen)];
13+
aLen = length(aSignal);
14+
end
15+
end
16+
17+
18+
419
N = aLen + bLen - 1; %lenth of convolution results must be aLen + bLen -1
520

621
bSignal = [bSignal zeros(1, aLen - 1)];

my_conv_usingfft.m

+18-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1-
function [ c ] = my_conv_usingfft( a ,b )
2-
alen = length(a);
3-
blen = length(b);
1+
function [ c ] = my_conv_usingfft( a ,b, mode)
2+
aLen = length(a);
3+
bLen = length(b);
44

5-
a = [a zeros(1, blen-1)];
6-
b = [b zeros(1, alen-1)];
5+
if (nargin < 3)
6+
mode = 'conv';
7+
end
8+
if (mode == 'corr')
9+
if (aLen > bLen)
10+
b = [b zeros(1, aLen - bLen)];
11+
bLen = length(b);
12+
else
13+
a = [a zeros(1, bLen - aLen)];
14+
aLen = length(a);
15+
end
16+
end
17+
18+
a = [a zeros(1, bLen-1)];
19+
b = [b zeros(1, aLen-1)];
720

821
A = fft(a);
922
B = fft(b);

0 commit comments

Comments
 (0)