matlab验证卷积

matlab大神求助!
我想用matlab程序验证,fft(A卷积B)=fft(A)乘以fft(B),我写的程序有或多或少的误差,求大神给成程序看看?

这里分两个文件,第一文件取名为conv_m.m,第二个文件为test.m,这两个文件必须放在同一目录下面。
1. conv_m.m文件的内容如下:
function [y] = conv_m(x1,x2)
y = conv(x1,x2);

2. test.m文件内容如下:
t_vec1 = -10:1:20;
t_vec2 = 0:1:30;
t_vec3 = -5:1:10;
x1 = t_vec1;
x2 = ones(1, length(t_vec2));
x3 = 1.2.^(t_vec3);

y11=conv_m(x1,x2); % 交换律
y12=conv_m(x2,x1); %交换律
if y11==y12
disp('满足交换律');
else
disp('不满足交换律');
end

y21 = conv_m(conv_m(x1,x2),x3);%结合律
y22 = conv_m(x1,conv_m(x2,x3));%结合律
if y21==y22
disp('满足结合律');
else
disp('不满足结合律');
end

x1=[x1 zeros(1,10)]; % add 10 0's
x2=[zeros(1,10) x2];
x3=[zeros(1,5) x3 zeros(1,20)];
y31=conv_m(x1,x2+x3);
y32=conv_m(x1,x2)+conv_m(x1,x3); %分配律
if y31==y32
disp('满足分配律');
else
disp('不满足分配律');
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-20
>> a = rand(1,100);
>> b = rand(1,100);
>> c = conv(a,b);
>> pa = [a,zeros(1,99)];
>> pb = [b,zeros(1,99)];
>> fc = ifft(fft(pa).*fft(pb));
>> sum((fc-c).^2)

ans =

5.9923e-27本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网