Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中不同线性卷积方法的比较_Matlab_Convolution - Fatal编程技术网

Matlab中不同线性卷积方法的比较

Matlab中不同线性卷积方法的比较,matlab,convolution,Matlab,Convolution,我试图通过调整Matlab方法来理解线性卷积和循环卷积之间的区别。我将线性卷积的结果与使用内置and函数、Bruno Luong和NAG的结果进行比较 这与该职位有关 我的代码是 % complex vectors x = rand(2^5,1) + 1j*rand(2^5,1); y = rand(2^5,1) - 1j*rand(2^5,1); clin = conv(x,y); % Matlab convolution function cfun = convnfft(x,y); % B

我试图通过调整Matlab方法来理解线性卷积和循环卷积之间的区别。我将线性卷积的结果与使用内置and函数、Bruno Luong和NAG的结果进行比较

这与该职位有关

我的代码是

% complex vectors
x = rand(2^5,1) + 1j*rand(2^5,1);
y = rand(2^5,1) - 1j*rand(2^5,1);

clin = conv(x,y); % Matlab convolution function
cfun = convnfft(x,y); % Bruno Luong function

N = length(x)+length(y)-1;
xpad = [x' zeros(1,N-length(x))]; % pad vectors
ypad = [y' zeros(1,N-length(y))];
ccirc = cconv(xpad,ypad); % do linear convolution with circular convolution function
cnag = c06pk(int64(1),xpad,ypad); % do linear convolution with NAG function

figure()
plot(clin,'o'); hold on; plot(cfun,'+')
figure()
plot(ccirc,'.'); hold on; plot(cnag,'x')
当我使用代码中概述的各种方法绘制线性卷积的结果时,并非所有方法都与临床结果一致。cfun同意,但ccirc和cnag不同意,因为它们是为寻找循环卷积而设计的

我是不是在零填充上做错了什么

编辑:如果我绘制这些线性卷积的结果,我得到:

cconv和c06pk中是否存在缩放问题?

您写道:

xpad = [x' zeros(1,N-length(x))]; 
ypad = [y' zeros(1,N-length(x))]; 
然而,'运算符不仅转置而且共轭。换成

xpad = [x.' zeros(1,N-length(x))]; 
ypad = [y.' zeros(1,N-length(x))]; 
这应该可以解决问题。我只能测试conv和cconv,在这个修复之后,它们完全一致